Toon posts:

Slimme meter via P1-poort loggen met een Netduino Plus OverzichtLaatste deel

Pagina: 1 2 3 ... 7 Laatste
Acties:

  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Ja, jij wel maar ik nie.....

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Wellicht dat je tijdens het uitlezen van de P1 poort via D2 kan checken of er data doorkomt. Zo nee doe een timeout van 5 seconden en schrijf dan pas de file weg. Wacht dan weer of er data doorkomt en schrijf pas als er data is doorgekomen en 5 seconden geen data meer doorkomt. Op die wijze heb je altijd complete berichten.

Kan dat binnen het .Net Microframework?

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
hansdegit schreef op woensdag 03 oktober 2012 @ 15:47:
Is er nog behoefte aan de files op mijn SD kaartje?
Tuurlijk, dan kan ik zien of het software of hardware matig kan worden opgelost.

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Heel apart...In de F:\06(Jun)-2011 directory ont-zet-tend veel files, waarin het volgende staat (uiteraard verandert de tijd wel steeds):

code:
1
2
Time of Logging : 06/01/2011 00:54:33
System.Byte[]


Dan heeft het niet zoveel zin om die verzameling aan je op te sturen toch?

Heb ik iets verkeerd gedaan?

edit: Firmware van te voren op 4.2.0.1 gebracht.

[Voor 7% gewijzigd door hansdegit op 03-10-2012 17:24]

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

hansdegit schreef op woensdag 03 oktober 2012 @ 17:22:
Heel apart...In de F:\06(Jun)-2011 directory ont-zet-tend veel files, waarin het volgende staat (uiteraard verandert de tijd wel steeds):

code:
1
2
Time of Logging : 06/01/2011 00:54:33
System.Byte[]


Dan heeft het niet zoveel zin om die verzameling aan je op te sturen toch?
Inderdaad. Datzelfde probleem had ik ook al, en JoopC heeft deze bestanden al.
Heb ik iets verkeerd gedaan?
Denk het niet ;)
edit: Firmware van te voren op 4.2.0.1 gebracht.
Ik ook. Dat had ik vorige week al gedaan.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
hansdegit schreef op woensdag 03 oktober 2012 @ 17:22:
Heel apart...In de F:\06(Jun)-2011 directory ont-zet-tend veel files, waarin het volgende staat (uiteraard verandert de tijd wel steeds):

code:
1
2
Time of Logging : 06/01/2011 00:54:33
System.Byte[]


Dan heeft het niet zoveel zin om die verzameling aan je op te sturen toch?

Heb ik iets verkeerd gedaan?

edit: Firmware van te voren op 4.2.0.1 gebracht.
Hans en c700,
Ik zal nieuwe code schrijven, omdat jullie 2 het zelfde probleem hebben heeft het niets te maken met inter-ferentie, storing op je kabeltje zeg maar.
En ja Hans, ik ben wel geinteresseerd in je bestandjes, ik denk dat ik het en-coderen mysterie heb opgelost.
Zal wachten met programmeren tot ik de bestandjes heb.
Hé, wacht ff ....zit net te denken dat jij een andere versie heb dan C700, hij krijgt ze direkt per email, dat lijntje is korter en gaat sneler.
Hans, als je nog verder wil testen, wil jij even je sd kaartje leegmaken en deze regel veranderen:
bovenin je progje:
Imports System.Text

Onder deze regel:
spSerialPort.Read(bBuffer, 0, bBuffer.Length)
Deze regel toevoegen:
spSerialPort.Flush()

de methode Flush() is ongedocumenteerd in MSDN dus ik weet niet waarin het resulteert, zal wel de leesbuffer geheel leeg maken in SerialPort neem ik aan.

en deze lijn veranderen:
writer.writeline(buffer.......
in:
writer.WriteLine(Encoding.UTF8.GetChars(bBuffer, 0, bBytesToRead - 1))
of deze:
writer.Write(writer.Encoding.GetChars(bBuffer))

en dan je N+ ff een paar minuutjes wil laten draaien.

En dat je halve bestandjes krijgt komt omdat ik de buffer te klein heb gehouden.
Ik hoor het wel.

[Voor 10% gewijzigd door Willie Wortel op 04-10-2012 10:35]


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
bBytesToRead is een variabele in een andere subroutine dan waar de WriteLn staat.

Dus nu weet ik het ff niet. Heb je een "nieuwe"versie van je source die ik kan knippen en plakken?

edit: 'k zie nu jouw edit. Ik ga even bestandjes uitspugen.

[Voor 14% gewijzigd door hansdegit op 04-10-2012 10:53]

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
hansdegit schreef op donderdag 04 oktober 2012 @ 10:52:
bBytesToRead is een variabele in een andere subroutine dan waar de WriteLn staat.

Dus nu weet ik het ff niet. Heb je een "nieuwe"versie van je source die ik kan knippen en plakken?

edit: 'k zie nu jouw edit. Ik ga even bestandjes uitspugen.
Hans, C700 kan je niet een manier verzinnen waar we de bestanden neer kunnen zetten zodat we allen (public) kunnen downloaden. Dit werkt niet echt.

  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Die wijken wel erg af van C700, hij heeft deze gestuurd:

ime of Logging : 06/01/2011 00:43:32
/ISk5\2MT382-1003

0-0:96.1.1(5A424556303035303639343233343131)
1-0:1.8.1(01035.280*kWh)
1-0:1.8.2(00580.009*kWh)
1-0:2.8.1(00181.088*kWh)
1-0:2.8.2(00419.555*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(0000.37*kW)
1-0:2.7.0(0000.00*kW)
0-0:17.0.0(0999.00*kW)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3238303131303031323031313038323132)
0-1:24.3.0(121003140000)(00)(60)(1)(0-1:24.2.1)(m3)
(00087.585)
0-1:24.4.0(1)
!

  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Hans welke regel heb je gebruik?

writer.WriteLine(Encoding.UTF8.GetChars(bBuffer, 0, bBytesToRead - 1))
of deze:
writer.Write(writer.Encoding.GetChars(bBuffer))

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
de tweede.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Imports Microsoft.SPOT
Imports Microsoft.SPOT.Hardware
Imports SecretLabs.NETMF.Hardware
Imports SecretLabs.NETMF.Hardware.NetduinoPlus
Imports System.IO
Imports System.Text
Imports System.IO.Ports

Namespace HansP1PoortListner

    Public Class SerialPortP1

        Shared spSerialPort As SerialPort
        Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False)
        Shared intFileCounter As Integer = 0

        Public Shared Sub Main()

            spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One)
            AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived)
            spSerialPort.Open()

            'forever sleep, for testing purpose only.
            Thread.Sleep(Timeout.Infinite)

        End Sub

        Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
            Dim bBytesToRead As Integer = spSerialPort.BytesToRead

            If bBytesToRead > 0 Then
                Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {}

                spSerialPort.Read(bBuffer, 0, bBuffer.Length)

                Dim blnLedOnOff As Boolean = True

                For t = 0 To bBytesToRead - 1

                    Debug.Print(bBuffer(t).ToString)
                    OnboardLed.Write(blnLedOnOff)
                    blnLedOnOff = Not blnLedOnOff
                    Thread.Sleep(10)

                Next

                P1FileLogger(bBuffer)

            End If

            OnboardLed.Write(False)
        End Sub

        Private Shared Sub P1FileLogger(ByVal bBuffer As Byte())

            Dim strPath As String = Nothing
            Dim strFileName As String = Nothing
            strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy")
            strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log"

            If Not File.Exists(strFileName) Then
                If Not Directory.Exists(strPath) Then
                    Directory.CreateDirectory(strPath)
                End If
            End If

            Using writer As New StreamWriter(strFileName, True)

                writer.WriteLine("Time of Logging : " & DateTime.Now)
                writer.Write(writer.Encoding.GetChars(bBuffer))


            End Using

            intFileCounter += 1

        End Sub

    End Class
End Namespace

[Voor 99% gewijzigd door hansdegit op 04-10-2012 12:17]

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Ja, dan heb je een andere versie:
deze regel:
writer.WriteLine(Encoding.UTF8.GetChars(bBuffer))
voor deze regel:
writer.Write(writer.Encoding.GetChars(bBuffer))

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Mooi, dan gaan we die even een tijdje data laten verzamelen tijdens de lunch.

edit: zo, dat smaakt. Files uploaded.

[Voor 21% gewijzigd door hansdegit op 04-10-2012 13:18]

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Dan gebruikt C700 toch wat anders of hij heeft een ander type meter.
Maar eens even afwachten wat hij te melden heeft.

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
In de tussentijd:
Hoe zou mijn code er exact uit moeten zien? Met alle liefde draai ik nog een rondje.

Edit: kan het zijn dat mijn berichten korter zijn doordat ik 3.3v gebruik?

[Voor 26% gewijzigd door hansdegit op 04-10-2012 13:49]

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Nou Hans, ik moet die bytes bewerken op binair voordat deze worden weggeschreven.
Dat de bestandjes een onregelmatige grootte hebben komt omdat er in de ontvangen bytes EOF markers staan, als deze niet worden bewerkt begrijp je wel wat er gebeurd.
Wel is er consistentie in je ontvangen bytes.
Waarom C700 wel de juiste output heeft weet ik niet, of 5v uitmaakt weet ik niet. Dat blijft allemaal proberen.

In de tussentijd heb ik wel de code voor de webserver vervolmaakt.
De rest van de code die we moeten hebben heb ik al geschreven, dat is knip en plak werk.

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Logisch natuurlijk.
Hoe was die bewerking ook alweer? 7 posities naar links?

Lijkt me leuk om nu al te zien wat de meter allemaal uitspuugt.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

JoopC schreef op donderdag 04 oktober 2012 @ 14:08:
Nou Hans, ik moet die bytes bewerken op binair voordat deze worden weggeschreven.
Dat de bestandjes een onregelmatige grootte hebben komt omdat er in de ontvangen bytes EOF markers staan, als deze niet worden bewerkt begrijp je wel wat er gebeurd.
Wel is er consistentie in je ontvangen bytes.
Waarom C700 wel de juiste output heeft weet ik niet, of 5v uitmaakt weet ik niet. Dat blijft allemaal proberen.
Vandaag wegens werk niets kunnen doen, maar vanavond en morgen kan ik wel af en toe tussendoor wat proberen.

Ik heb niet de juiste output uit de Netduino. Bij mij werkt de Netduino code tot nu toe ook niet correct.

De files met de juiste/alle informatie haal ik via een tweede aansluiting via een FTDI kabel uit de P1 poort.

Ik heb dus een splitter die het signaal van de P1 poort van de slimme meter naar een Smile P1, de Energq Gateway, de Netduino en de FTDI kabel splitst.

Alle devices behalve de Netduino geven de juiste informatie door. Dat ligt dus nog aan de code of de opbouw van de code.
In de tussentijd heb ik wel de code voor de webserver vervolmaakt.
De rest van de code die we moeten hebben heb ik al geschreven, dat is knip en plak werk.
Als je weer een nieuwe code om te testen naar me stuurt, of deze via de Skydrive shared (uitnodiging heb ik naar je gestuurd JoopC) dan kunnen we makkelijk daar de data plaatsten. Hans, als jij even naar mij mailt dan zal ik jou ook toegang geven. Er komt een DM aan met mijn e-mailadres.

[Voor 3% gewijzigd door Gé Brander op 04-10-2012 20:46]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Hmm, uitdagend. De eerste read geeft bij mij 3 characters uit de buffer. En guess what, het laatste character is dan een EOF (ascii 04). Als je 04 XOR 127 doet, kom je op de ASCII code voor hoofdletter S uit. Laat dat nu net het 3e karakter uit de reeks van c70070540 te zijn.

Da's een beetje verneukeratief. Want het event SerialDataReceived vuurt ook als er een EOF verstuurd wordt. Terwijl dat natuurlijk gewoon een 'S' had moeten zijn.

Het verontrustende is dat ik op het netduino forum alleen maar hardwarematige oplossingen tegenkom. Ik hoop echt dat JoopC ons kan geruststellen.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

hansdegit schreef op vrijdag 05 oktober 2012 @ 23:29:
Hmm, uitdagend. De eerste read geeft bij mij 3 characters uit de buffer. En guess what, het laatste character is dan een EOF (ascii 04). Als je 04 XOR 127 doet, kom je op de ASCII code voor hoofdletter S uit. Laat dat nu net het 3e karakter uit de reeks van c70070540 te zijn.

Da's een beetje verneukeratief. Want het event SerialDataReceived vuurt ook als er een EOF verstuurd wordt. Terwijl dat natuurlijk gewoon een 'S' had moeten zijn.

Het verontrustende is dat ik op het netduino forum alleen maar hardwarematige oplossingen tegenkom. Ik hoop echt dat JoopC ons kan geruststellen.
Ik heb de 74LS04p ertussen gemonteerd. Heb je een stukje code die ik kan testen? Dan kunnen we vergelijken.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Ik heb geen code, alleen nog maar ideeën. Ben even aan het stoeien met mijn (oude) kennis over parity etc.
Volgens mij is het zaak om byte voor byte die spullen in te lezen en niet buffergewijs. Want einde buffer (EOF) betekent niet einde transmissie.

Dan komt nu mijn VB handicap boven; ik moet me echt goed verdiepen in die SerialPort methods.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
je zit op het verkeerde spoor.

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Hé, je leeft nog! Enlighten us.

[Voor 3% gewijzigd door hansdegit op 06-10-2012 12:06]

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
De bytes worden alleen geïnterpreteerd als deze ge-encodeerd worden. De ingelezen buffer zal wel de juiste lengte hebben. De in de buffer aanwezige bytes zijn de originele door P1 verzonden bytes en hebben de waarde van 0 tot 255. Dus een waarde in een buffer byte zal GEEN invloed hebben op het inlezen.
Maar als je deze verstuurd naar een file of op het scherm weergeeft dan veranderd de betekenis van de byte.
Dit is vastgelegd in afspraken, vast wel eens gehoord van ASCii etc....
Het vertalen van de byte gebeurd oa in de class methode .TOSTRING

De juiste buffer lengte (ontvangen bytes) kan je weergeven door:
debug.print(bBuffer.length.tostring)
of in je bestandje
writer.WriteLine("Original Length: " & bBuffer.length.tostring))
Je zal dan zien dat de lengte afwijkt van de file lengte.

hier wat je zelf had uitgevonden met xor, ga een beetje oefenen met invoer. >:)
For t = 0 To bBuffer.Length - 1
bBuffer(t) = CByte((bBuffer(t) Xor 127))
Debug.Print(bBuffer(t).ToString)
Debug.Print(Strings.ChrW(bBuffer(t)))
Next
doe deze loop voordat je iets weggschijft.
enjoy.
Ik had al lang wat geschreven maar kan moeilijk iets programmeren wat ik niet heb.
maar komt goed, nog een paar nachtjes slapen.

  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
addendum: als je instellingen van serialcom bv pariteit of baudrate niet goed staan krijg je ook krep in je buffer.

  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Hans, Als ik vandaag thuis kom dan zal ik een stukje code schrijven voor je die de computer laat zoeken naar de juiste formule. Appeltje eitje ....toch. kan je beter slapen. O-)

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Thx, tegenwoordig slaap ik weer prima hoor met 2 naproxennetjes.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
http://stackoverflow.com/...atareceived-event-to-fire

Vooralsnog doet die xor 127 nog niet wat ik wil. Ik krijg characters > 128, dus ergens komt er crap in de buffer.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • zonnigtype
  • Registratie: Juni 2006
  • Laatst online: 01-12-2021

zonnigtype

zonne-energie voor iedereen

Nog steeds een zeer levendige discussie over pros en cons van sluwe meters op blog van Maarten de Wit, met zeer interessante inside informatie. Vast ook wel interessant voor volgers van dit topic:

http://maartendewit66.wor...slimme-meter-domme-kracht

Sag nicht: "Ich habe die Wahrheit gefunden", sondern: "Ich habe eine Wahrheit gefunden" (Kahlil Gibran, 1883 - 1931)


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

zonnigtype schreef op zaterdag 06 oktober 2012 @ 15:02:
Nog steeds een zeer levendige discussie over pros en cons van sluwe meters op blog van Maarten de Wit, met zeer interessante inside informatie. Vast ook wel interessant voor volgers van dit topic:

http://maartendewit66.wor...slimme-meter-domme-kracht
Dank voor de link. Maar laten we aub de discussie niet hier voeren. ;)

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Nieuw probeersel.

Met deze krijgen we in ieder geval consistentie in de berichten.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Imports Microsoft.SPOT
Imports Microsoft.SPOT.Hardware
Imports SecretLabs.NETMF.Hardware
Imports SecretLabs.NETMF.Hardware.NetduinoPlus
Imports System.IO
Imports System.Text
Imports System.IO.Ports

Namespace HansP1PoortListner

        Public Class SerialPortP1

        Shared spSerialPort As SerialPort
        Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False)
        Shared intFileCounter As Integer = 0
        Shared Message As Byte() = New Byte(4096) {}
        Shared MessageLen As Integer = 0


        Public Shared Sub Main()
            spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One)
            AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived)
            spSerialPort.Open()

            'forever sleep, for testing purpose only.
            Thread.Sleep(Timeout.Infinite)

        End Sub

        Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
            Dim bBytesToRead As Integer = spSerialPort.BytesToRead
            Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {}
            OnboardLed.Write(True)
            If bBytesToRead > 0 Then
                spSerialPort.Read(bBuffer, 0, bBuffer.Length)
                For t = 0 To bBytesToRead - 1
                    Message(MessageLen) = CByte((bBuffer(t) Xor 127))
                    MessageLen += 1
                    If bBuffer(t) = 40 Then
                        'EOT, new message starts here
                        P1FileLogger(Message)
                        Debug.Print(Encoding.UTF8.GetChars(Message))
                        Message = New Byte(4096) {}
                        MessageLen = 0
                    End If
                    'Debug.Print(bBuffer(t).ToString)
                Next
            End If

            OnboardLed.Write(False)
        End Sub

        Private Shared Sub P1FileLogger(ByVal bBuffer As Byte())

            Dim strPath As String = Nothing
            Dim strFileName As String = Nothing
            strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy")
            strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log"

            If Not File.Exists(strFileName) Then
                If Not Directory.Exists(strPath) Then
                    Directory.CreateDirectory(strPath)
                End If
            End If

            Using writer As New StreamWriter(strFileName, True)

                writer.WriteLine("Time of Logging : " & DateTime.Now)
                writer.WriteLine(Encoding.UTF8.GetChars(bBuffer))


            End Using

            intFileCounter += 1

        End Sub


    End Class
End Namespace


De bedoeling:
een "grote boodschap" begint altijd met '40'. Deze code componeert zo'n grote boodschap alvorens 'em naar SD weg te schrijven. Nu nog de juiste decodeersleutel vinden.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Top, ik ga hem testen :)
Ik heb hem geplaatst in https://skydrive.live.com...=66A1B30928B97B4F%2129344

Dit is wat ik in mijn intermediate window te zien krijg:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13
10 13 10 48 45 48 58 57 54 46 49 46 49 40 53 65 52 50 52
53 53 54 51 48 51 48 51 53 51 48 51 54 51 57 51 52 51 50
51 51 51 52 51 49 51 49 41 13 10 49 45 48 58 49 46 56 46
49 40 48 49 48 53 49 46 55 56 54 42 107 87 104 41 13 10
49 45 48 58 49 46 56 46 50 40 48 48 53 57 54 46 48 49 50
42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 49 40 48
48 49 56 50 46 56 56 48 42 107 87 104 41 13 10 49 45 48 
58 50 46 56 46 50 40 48 48 52 50 50 46 51 57 51 42 107
87 104 41 13 10 48 45 48 58 57 54 46 49 52 46 48 40 48
48 48 49 41 13 10 49 45 48 58 49 46 55 46 48 40 48 48 48
48 46 54 49 42 107 87 41 13 10 49 45 48 58 50 46 55 46
48 40 48 48 48 48 46 48 48 42 107 87 41 13 10 48 45 48
58 49 55 46 48 46 48 40 48 57 57 57 46 48 48 42 107 87
41 13 10 48 45 48 58 57 54 46 51 46 49 48 40 49 41 13 10
48 45 48 58 57 54 46 49 51 46 49 40 41 13 10 48 45 48 58
57 54 46 49 51 46 48 40 41 13 10 48 45 49 58 50 52 46 49
46 48 40 51 41 13 10 48 45 49 58 57 54 46 49 46 48 40 51
50 51 56 51 48 51 49 51 49 51 48 51 48 51 49 51 50 51 48
51 49 51 49 51 48 51 56 51 50 51 49 51 50 41 13 10 48 45
49 58 50 52 46 51 46 48 40 49 50 49 48 48 54 49 57 48 48
48 48 41 40 48 48 41 40 54 48 41 40 49 41 40 48 45 49 58
50 52 46 50 46 49 41 40 109 51 41 13 10 40 48 48 48 57 54
46 56 57 56 41 13 10 48 45 49 58 50 52 46 52 46 48 40 49
41 13 10 33 13 10
A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll
A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll
A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll
 Uncaught exception

En er wordt niets naar de SD kaart geschreven.

Wacht even. Ik krijg wel volledige berichten binnen in de intermediate window, bovenstaande vertaald naar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/ISk5\2MT382-1003

0-0:96.1.1(5A424556303035303639343233343131)
1-0:1.8.1(01051.786*kWh)
1-0:1.8.2(00596.012*kWh)
1-0:2.8.1(00182.880*kWh)
1-0:2.8.2(00422.393*kWh)
0-0:96.14.0(0001)
1-0:1.7.0(0000.61*kW)
1-0:2.7.0(0000.00*kW)
0-0:17.0.0(0999.00*kW)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3238303131303031323031313038323132)
0-1:24.3.0(121006190000)(00)(60)(1)(0-1:24.2.1)(m3)
(00096.898)
0-1:24.4.0(1)
!


Het lijkt erop dat er een fout zit in de code van het schrijven naar de SD kaart.
De fout treedt op in deze regel
code:
1
 Directory.CreateDirectory(strPath)

[Voor 132% gewijzigd door Gé Brander op 06-10-2012 19:57]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
c700, hoe kom je nu aan dat telegram. De numerieke output in je debug window is de juiste. Heb je een kabeltje gebruikt of wat anders. Ik kom er op deze manier niet uit als er 2 verschillende systemen worden gebruikt tussen jou en Hans. (wel kabeltje/geen kabeltje..... weet ik veel)

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

JoopC schreef op zaterdag 06 oktober 2012 @ 20:18:
c700, hoe kom je nu aan dat telegram. De numerieke output in je debug window is de juiste. Heb je een kabeltje gebruikt of wat anders. Ik kom er op deze manier niet uit als er 2 verschillende systemen worden gebruikt tussen jou en Hans. (wel kabeltje/geen kabeltje..... weet ik veel)
Ok, nogmaals mijn situatie:

P1 poort - kabel naar breakout board met 7404 voor inversie data signaal - Netduino

Code voor de Netduino: (bron deze post van Hans)
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Imports Microsoft.SPOT 
Imports Microsoft.SPOT.Hardware 
Imports SecretLabs.NETMF.Hardware 
Imports SecretLabs.NETMF.Hardware.NetduinoPlus 
Imports System.IO 
Imports System.Text 
Imports System.IO.Ports 

Namespace HansP1PoortListner 

    Public Class SerialPortP1 

        Shared spSerialPort As SerialPort 
        Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False) 
        Shared intFileCounter As Integer = 0 

        Public Shared Sub Main() 

            spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One) 
            AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived) 
            spSerialPort.Open() 

            'forever sleep, for testing purpose only. 
            Thread.Sleep(Timeout.Infinite) 

        End Sub 

        Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) 
            Dim bBytesToRead As Integer = spSerialPort.BytesToRead 

            If bBytesToRead > 0 Then 
                Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {} 

                spSerialPort.Read(bBuffer, 0, bBuffer.Length) 

                Dim blnLedOnOff As Boolean = True 

                For t = 0 To bBytesToRead - 1 

                    Debug.Print(bBuffer(t).ToString) 
                    OnboardLed.Write(blnLedOnOff) 
                    blnLedOnOff = Not blnLedOnOff 
                    Thread.Sleep(10) 

                Next 

                P1FileLogger(bBuffer) 

            End If 

            OnboardLed.Write(False) 
        End Sub 

        Private Shared Sub P1FileLogger(ByVal bBuffer As Byte()) 

            Dim strPath As String = Nothing 
            Dim strFileName As String = Nothing 
            strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy") 
            strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log" 

            If Not File.Exists(strFileName) Then 
                If Not Directory.Exists(strPath) Then 
                    Directory.CreateDirectory(strPath) 
                End If 
            End If 

            Using writer As New StreamWriter(strFileName, True) 

                writer.WriteLine("Time of Logging : " & DateTime.Now) 
                writer.Write(writer.Encoding.GetChars(bBuffer)) 


            End Using 

            intFileCounter += 1 

        End Sub 

    End Class 
End Namespace


De code die ik uit het venster van Visual Studio krijg (ASCII codes)
code:
1
2
3
4
47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13 10 13 10 48 45 48 58 57 54 46 49 46 49 40 53 65 52 50 52 53 53 54 51 48 51 48 51 53 51 48 51 54 51 57 51 52 51 50 51 51 51 52 51 49 51 49 41 13 10 49 45 48 58 49 46 56 46 49 40 48 49 48 53 49 46 55 56 54 42 107 87 104 41 13 10 49 45 48 58 49 46 56 46 50 40 48 48 53 57 54 46 48 49 50
42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 49 40 48 48 49 56 50 46 56 56 48 42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 50 40 48 48 52 50 50 46 51 57 51 42 107 87 104 41 13 10 48 45 48 58 57 54 46 49 52 46 48 40 48 48 48 49 41 13 10 49 45 48 58 49 46 55 46 48 40 48 48 48 48 46 54 49 42 107 87 41 13 10 49 45 48 58 50 46 55 46
48 40 48 48 48 48 46 48 48 42 107 87 41 13 10 48 45 48 58 49 55 46 48 46 48 40 48 57 57 57 46 48 48 42 107 87 41 13 10 48 45 48 58 57 54 46 51 46 49 48 40 49 41 13 10 48 45 48 58 57 54 46 49 51 46 49 40 41 13 10 48 45 48 58 57 54 46 49 51 46 48 40 41 13 10 48 45 49 58 50 52 46 49 46 48 40 51 41 13 10 48 45 49 58 57 54 46 49 46 48 40 51
50 51 56 51 48 51 49 51 49 51 48 51 48 51 49 51 50 51 48 51 49 51 49 51 48 51 56 51 50 51 49 51 50 41 13 10 48 45 49 58 50 52 46 51 46 48 40 49 50 49 48 48 54 49 57 48 48 48 48 41 40 48 48 41 40 54 48 41 40 49 41 40 48 45 49 58 50 52 46 50 46 49 41 40 109 51 41 13 10 40 48 48 48 57 54 46 56 57 56 41 13 10 48 45 49 58 50 52 46 52 46 48 40 49 41 13 10 33 13 10
zet ik om via de volgende website om te controleren wat de code is: http://home.paulschou.net/tools/xlate/
En daar komt dan dit uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/ISk5\2MT382-1003

0-0:96.1.1(5A424556303035303639343233343131)
1-0:1.8.1(01051.786*kWh)
1-0:1.8.2(00596.012*kWh)
1-0:2.8.1(00182.880*kWh)
1-0:2.8.2(00422.393*kWh)
0-0:96.14.0(0001)
1-0:1.7.0(0000.61*kW)
1-0:2.7.0(0000.00*kW)
0-0:17.0.0(0999.00*kW)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3238303131303031323031313038323132)
0-1:24.3.0(121006190000)(00)(60)(1)(0-1:24.2.1)(m3)
(00096.898)
0-1:24.4.0(1)
!


Echter: De VB code zoals hier gebruikt geeft een foutmelding dat er iets fout gaat in de volgende regel code:
Visual Basic .NET:
1
2
3
4
5
            If Not File.Exists(strFileName) Then  
                If Not Directory.Exists(strPath) Then  
                    Directory.CreateDirectory(strPath)
                End If  
            End If

En dan met name de regel
Visual Basic .NET:
1
                    Directory.CreateDirectory(strPath)

Krijgt een error:
code:
1
2
3
A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll
A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll
A first chance exception of type 'System.NotSupportedException' occurred in Microsoft.SPOT.IO.dll

Wat er in mijn ogen voor zorgt dat de tekst niet in een file geschreven wordt. Waarom weet ik dus nog niet. Maar het resultaat is qua ASCII code en text correct, maar wordt niet weggeschreven.

De berichten beginnen dus altijd met een '/' (ASCII 47) en eindigen altijd met een '!' (ASCII 10).


Extra informatie:
Daarnaast heb ik ook een FTDI RS232-USB kabel aangesloten op de P1 poort die rechtstreeks naar de computer gaat om te controleren hoe de berichten eruit zien. Deze lees ik uit met een stukje software op mijn pc. Alles wat ik hierboven laat zien, en van nu af aan laat zien is puur en alleen maar Netduino resultaten.

Ik hoop dat ik nu duidelijk genoeg heb kunnen maken hoe ik het aangesloten heb en hoe ik tot deze resultaten kom. Bij vraagtekens graag nogmaals vragen! :)

[Voor 35% gewijzigd door Gé Brander op 06-10-2012 20:42]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Nou, dan ben jij toch klaar. Die IC is er toch een van een paar dubbeltjes.
Kan jij een compleet aansluit schema maken voor Hans en mij en anderen.
Hoe de draadjes vanaf de P1 naar de ic en naar de Netduino, (kan eenvoudig getekend met pen en papier, foto......)

Hoef ik het wiel niet meer uit te vinden en kan ik beginnen met het complete programma in elkaar te zetten, ben ik snel een a twee dagen mee bezig om het allemaal netjes in elkaar te plakken. De beta projectjes kan je dan tussentijds testen.

Hans kan dan zo een IC kopen op internet, ik geloof 5 voor een euro.
Heb het liefst dat we met zijn drieen hetzelfde systeem hebben, dat is voor mij het makkelijkst, ook om het gestroomlijnd te krijgen.

Het goede nieuws is dat vandaag de webserver het uitstekend heeft gedaan, deze heb ik in mijn alreeds draaiende meterkast project geplakt, nu met email service. Echt eeeel eeel leuk.

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Zoals beschreven in: c70070540 in "Slimme meter via P1-poort loggen met een Netduino Plus"

Ik heb nog 1x 7404 liggen. zal ik hem opsturen naar je Joop?

[Voor 21% gewijzigd door Gé Brander op 06-10-2012 21:15]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Neuh, lang zo leuk niet. Ik ben op zoek naar de ontsleutelcode. Hier een volledige message:
27, 86, 10, 101, 89, 69, 100, 82, 114, 118, 22, 86, 86, 74, 86, 31, 37, 31, 11, 13, 19, 35, 70, 94, 21, 125, 54, 46, 42, 21, 19, 25, 31, 25, 31, 25, 21, 25, 31, 25, 19, 25, 13, 25, 50, 50, 31, 25, 25, 25, 50, 90, 74, 86, 74, 31, 11, 70, 94, 31, 31, 50, 70, 30, 30, 86, 82, 20, 33, 39, 105, 44, 50, 123, 70, 94, 31, 31, 19, 50, 35, 13, 21, 86, 82, 20, 33, 39, 105, 108, 50, 123, 70, 94, 31, 31, 13, 34, 70, 25, 25, 86, 82, 20, 33, 39, 105, 108, 50, 123, 70, 94, 31, 62, 38, 35, 46, 42, 82, 20, 33, 61, 86, 44, 108, 54, 114, 50, 109, 118, 118, 86, 39, 105, 44, 50, 50, 109, 118, 118, 22, 54, 82, 37, 33, 39, 105, 108, 50, 50, 109, 118, 118, 118, 54, 118, 37, 33, 61, 86, 44, 18, 50, 54, 109, 44, 44, 108, 118, 37, 33, 61, 86, 44, 108, 54, 54, 114, 45, 61, 86, 44, 108, 54, 18, 54, 45, 61, 86, 44, 108, 54, 18, 54, 45, 61, 86, 108, 66, 39, 52, 45, 61, 86, 44, 108, 54, 50, 45, 54, 18, 36, 118, 22, 86, 18, 86, 18, 118, 22, 118, 22, 86, 18, 54, 18, 86, 18, 118, 22, 118, 22, 38, 18, 86, 18, 118, 22, 86, 18, 54, 61, 86, 108, 114, 50, 54, 45, 50, 82, 114, 118, 54, 54, 82, 114, 118, 118, 118, 101, 109, 118, 101, 109, 118, 101, 45, 66, 101, 109, 86, 108, 114, 50, 50, 101, 66, 61, 109, 118, 118, 22, 86, 50, 54, 86, 61, 86, 108, 114, 50, 50, 45, 14, 111, 57, 61

Begint dus met 27 en eindigt met 61.
Die is opgehaald met onderstaande code.
@JoopC: ziet het een beetje begrijpelijk uit?

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Imports Microsoft.SPOT
Imports Microsoft.SPOT.Hardware
Imports SecretLabs.NETMF.Hardware
Imports SecretLabs.NETMF.Hardware.NetduinoPlus
Imports System.IO
Imports System.Text
Imports System.IO.Ports

Namespace HansP1PoortListner

        Public Class SerialPortP1

        Shared spSerialPort As SerialPort
        Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False)
        Shared intFileCounter As Integer = 0
        Shared Message As Byte() = New Byte(4096) {}
        Shared MessageLen As Integer = 0


        Public Shared Sub Main()
            spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One)
            AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived)
            spSerialPort.Open()

            'forever sleep, for testing purpose only.
            Thread.Sleep(Timeout.Infinite)

        End Sub

        Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
            Dim bBytesToRead As Integer = spSerialPort.BytesToRead
            Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {}
            OnboardLed.Write(True)
            If bBytesToRead > 0 Then
                spSerialPort.Read(bBuffer, 0, bBuffer.Length)
                For t = 0 To bBytesToRead - 1
                    'Debug.Print("---------------first: " & Message(0).ToString & " current: " & bBuffer(t).ToString)
                    Message(MessageLen) = bBuffer(t)
                    If bBuffer(t) = 40 Then
                        'EOT, new message starts here
                        'P1FileLogger(Message)
                        Debug.Print("raw bytes: ")
                        For i = 0 To MessageLen - 1
                            Debug.Print(Message(i).ToString)
                            
                        Next
                        Debug.Print("end of message")

                        'Debug.Print(Encoding.UTF8.GetChars(Message))
                        Message = New Byte(4096) {}
                        MessageLen = 0
                    Else
                        MessageLen += 1
                    End If
                Next
            End If

            OnboardLed.Write(False)
        End Sub

        Private Shared Sub P1FileLogger(ByVal bBuffer As Byte())

            Dim strPath As String = Nothing
            Dim strFileName As String = Nothing
            strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy")
            strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log"

            If Not File.Exists(strFileName) Then
                If Not Directory.Exists(strPath) Then
                    Directory.CreateDirectory(strPath)
                End If
            End If

            Using writer As New StreamWriter(strFileName, True)

                writer.WriteLine("Time of Logging : " & DateTime.Now)
                writer.WriteLine(Encoding.UTF8.GetChars(bBuffer))


            End Using

            intFileCounter += 1

        End Sub


    End Class
End Namespace


We gingen toch bewijzen dat een Netduino slimmer is dan een Arduino? Even wat cryptografie erop loslaten. Maandag krijg jij je meter toch?

edit: zit volgens mij een foutje in. 40 zou de laatste code moeten zijn, maar die wordt niet weergegeven. Ik snap reeds waarom.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
C700, heb ik het juist: ?

pin 1 7404 -> Pin5 P1
pin 2 7404 -> RX N+
pin 14 7404 5V, Pin2 P1 5V
pin 7 7404 gnd, Pin3 P1 gnd

Hans je code is goed, nu kan je toch ook encoderen?

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Nee, met een xor 127 is er nog steeds geen chocola van te maken. Hij is -nogmaals- wél reteconsistent.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Je laat een loop draaien totdat je een leesbaar telegram krijgt.
Je moet alle waarden controleren, je begint bij 0 tot 255
Zal het even voor je schrijven, moet je even wachten.

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Helaas, alles van 1 t/m 127 geeft onzin. We moeten even meer buiten het doosje denken, ben ik bang.

edit: bij hoger dan 127 krijg ik een mscorlib exception.

[Voor 23% gewijzigd door hansdegit op 06-10-2012 21:56]

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

ik denk dat je echt de 7404 weg moet bewandelen.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
hansdegit schreef op zaterdag 06 oktober 2012 @ 21:55:
Helaas, alles van 1 t/m 127 geeft onzin. We moeten even meer buiten het doosje denken, ben ik bang.

edit: bij hoger dan 127 krijg ik een mscorlib exception.
hans, je mag zelf alle mogelijkheden testen, heb ik net ook al gedaan. Dit is een goeie oefening. :-)

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Imports Microsoft.SPOT
Imports Microsoft.SPOT.Hardware
Imports SecretLabs.NETMF.Hardware
Imports SecretLabs.NETMF.Hardware.NetduinoPlus
Imports System.Text

Module Module1

    Sub Main()
        ' write your code here
       
        Dim bBuffer() As Byte = {27, 86, 10, 101, 89, 69, 100, 82, 114, 118, 22, 86, 86, 74, 86, 31, 37, 31, 11, 13, 19}
        Dim xbuffer(bBuffer.Length) As Byte
        For i = 1 To 255
            For t = 0 To bBuffer.Length - 1
                xbuffer(t) = CByte((bBuffer(t) Xor i))
            Next
            Debug.Print(Encoding.UTF8.GetChars(xbuffer))
            Thread.Sleep(500)
        Next
    End Sub

End Module


Maak een nieuw projectje N+ aan paste deze code en ga op je computer over op project/decoder/emulator.
Zodoende doet je computer het werk en niet de Netduino.
Van de Xor kan je ook een OR of zo maken.
Ik sluit me aan bij C700, de IC weg, zijn we ook snel klaar.
Heb alle mogelijkheden al doorlopen. :-) Maar moet echt low level.

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Inderdaad!

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
C700 Mooi, die heb ik liggen, als Hans er niet uitkomt met het encoderen gaan we over op jou manier.
Hans..........wat zeggen we?

[Voor 7% gewijzigd door Willie Wortel op 06-10-2012 22:17]


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Komop mannuh, we gaan toch niet capituleren? Zo voelt het bij mij een beetje.
Dan is een Arduino tóch slimmer...Nee toch?

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

als jij hem niet hebt Hans dan kan ik je de mijne sturen

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Uiteindelijk is het natuurlijk de bedoeling om die meter uit te lezen, one way or another.
Dus ja, graag.

Maar ik moet de nederlaag nog even een plekje geven. Waarom kan zo'n Arduino het nou wel?????

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Mail je adres maar even.

En ja, soms kan het een wel iets en het ander niet. Uiteindelijk is het .Net Microframework toch krachtiger.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
JoopC schreef op maandag 17 september 2012 @ 14:55:
Mij maak je ook niet wijs dat een Arduino meer kan, in geen 2000 lichtjaar.

Eerst inverten, als ik de .h file heb kijk ik of we de code kunnen herschrijven, de lib zit in de Arduino IDE.
Nu heb ik weer geen winzip......ppppffffffff
Ik ben benieuwd of de P1 uberhaubt al enige onzin van betekenis uitkraamt. naar de Netduino :-)
Maar.....volg gewoon de arduino code, byte inlezen, byte shiften naar leesbare chars.

ByteThatYouWant = P1PoortByte And Not(1 << 7)
thats it.
Is deze bewering nog geldig vwb het inverteren?

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
hansdegit schreef op zaterdag 06 oktober 2012 @ 22:56:
[...]

Is deze bewering nog geldig vwb het inverteren?
Er kan er maar 1 de oplossing geven en dat is C700, (of wachten tot ik de meter heb, of jij een IC) die kan met en zonder IC de P1 uitlezen. Die twee tabellen kan ik dan op binair niveau analyseren. Nu moet ik maar raden of er uit jou P1 (zeker in het begin) dezelfde bytes worden verzonden als uit C700 zijn P1. Uit onderstaand zie ik geen overeenkomst.

ingelezen: Ingelezen:
C700: 47 / 00101111 Hans: 27 00011011
C700: 73 I 01001001 Hans: 86 01010110

Als je dit onder elkaar zet:
00101111 01001001
00011011 01010110

Wat dacht jij dat de software serial lib doet bij een arduino, die doen hetzelfde als wat ik wil, gewoon softwarematig. Ik heb hier niks, kan dus niks testen op deze manier.
Ik geloof wel dat er een de-compiler is voor .dll, kan je zien hoe het is opgelost, heb ik me nooit in verdiept.
Maar de IC oplossing is voor mij ook prima, ga ik niet moeilijk over doen, het voordeel daarvan is dat de N+ dan tegen overspanning en lekspanning (ruis) beveiligd is.

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Nu zit ik er toch wel erg dicht bij hoor:
raw bytes:
msg: k
end of message
raw bytes:
msg: rTzMS]MV4T0-0:96.\P5Adhj563030353036393ff0333fRZ0:\\P00j\lTVu/lK)fB\P006f.95TVu/lKIfB\P009n\j5Vu/lKIfB\P0`l.hjVu/!T)IdFf lK)ff dmolKIff dMmo!T)vfd ))Imo!T)Idd)!T)Id6d)!T)Id6d)!TIFffi!T)Idfi$6m46644,6$66446646$!TIFfd)&t=
I
)
TIFff
^! 4fJj0-tdh\\0(R!k
end of message
raw bytes:
msg: rTzMS]MV4T0-0:96.\P5Adhj563030353036393ff0333fRZ0:\\P00j\lTVu/lKL)fB\P006f.95TVu/lKIfB\P009n\j6VujclKIfB\P0`l.hjVu/!T)IdFf ]lK)ff dmolKIff dMmo!T)vfd ))Imo!T)Idd)!T)Id6d)!T)Id6d)!TIFffi!T)Idfi$6m466446$6644\6646$!TIFfd)&t

I
).
TIFff
^! 4fJj0-th\\0(R)!k
end of message

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Waar kan ik mee helpen op dit moment? (naar aanleiding van de opmerking JoopC in "Slimme meter via P1-poort loggen met een Netduino Plus" van Joop)

Ik kan van alles testen en heb tijd vandaag.

Ok, ik ben nu aan het testen met een kabel zonder de 74LS04 en met dezelfde code als.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Imports Microsoft.SPOT  
Imports Microsoft.SPOT.Hardware  
Imports SecretLabs.NETMF.Hardware  
Imports SecretLabs.NETMF.Hardware.NetduinoPlus  
Imports System.IO  
Imports System.Text  
Imports System.IO.Ports  

Namespace HansP1PoortListner  

    Public Class SerialPortP1  

        Shared spSerialPort As SerialPort  
        Shared OnboardLed As New OutputPort(Pins.ONBOARD_LED, False)  
        Shared intFileCounter As Integer = 0  

        Public Shared Sub Main()  

            spSerialPort = New SerialPort(SerialPorts.COM2, 9600, Parity.Even, 7, StopBits.One)  
            AddHandler spSerialPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf Serial_DataReceived)  
            spSerialPort.Open()  

            'forever sleep, for testing purpose only.  
            Thread.Sleep(Timeout.Infinite)  

        End Sub  

        Private Shared Sub Serial_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)  
            Dim bBytesToRead As Integer = spSerialPort.BytesToRead  

            If bBytesToRead > 0 Then  
                Dim bBuffer As Byte() = New Byte(bBytesToRead - 1) {}  

                spSerialPort.Read(bBuffer, 0, bBuffer.Length)  

                Dim blnLedOnOff As Boolean = True  

                For t = 0 To bBytesToRead - 1  

                    Debug.Print(bBuffer(t).ToString)  
                    OnboardLed.Write(blnLedOnOff)  
                    blnLedOnOff = Not blnLedOnOff  
                    Thread.Sleep(10)  

                Next  

                P1FileLogger(bBuffer)  

            End If  

            OnboardLed.Write(False)  
        End Sub  

        Private Shared Sub P1FileLogger(ByVal bBuffer As Byte())  

            Dim strPath As String = Nothing  
            Dim strFileName As String = Nothing  
            strPath = "\SD\" & DateTime.Now.ToString("MM(MMM)-yyyy")  
            strFileName = strPath & "\" & DateTime.Now.ToString("dd-MM(MMM)-yyyy-") & intFileCounter.ToString & ".log"  

            If Not File.Exists(strFileName) Then  
                If Not Directory.Exists(strPath) Then  
                    Directory.CreateDirectory(strPath)  
                End If  
            End If  

            Using writer As New StreamWriter(strFileName, True)  

                writer.WriteLine("Time of Logging : " & DateTime.Now)  
                writer.Write(writer.Encoding.GetChars(bBuffer))  


            End Using  

            intFileCounter += 1  

        End Sub  

    End Class  
End Namespace



Dan komt er dit uit:
code:
1
2
3
4
94 31 31 54 54 70 25 13 25 82 20 33 61 86 44 108 54 114 50 109 118 118 86 39 105 44 50 50 109 118 118 118 54 118 37 33 39 105 108 50 50 109 118 118 118 54 123
42 82 20 43 57 61 86 44 18 50 54 109 44 44 108 118 37 33 61 86 44 108 54 54 114 45 61 86 44 108 54 18 54 45 61 86 44 108 54 18 54 45 61 86 108 114 50 50 45 61
86 44 108 54 50 45 54 18 36 118 22 86 34 86 18 118 22 118 22 86 18 54 18 118 22 86 18 86 18 118 22 36 54 18 86 18 54 61 86 108 114 50 54 45 50 82 114 118 22 66
50 114 118 118 118 101 109 118 101 109 118 101 45 101 109 86 108 114 50 50 101 66 61 109 118 118 108 100 18 68 61 86 108 114 50 50 45 111 57 61


Wat weer vertaald naar:

code:
1
2
^66F
R!=V,l6r2mvvV'i,22mvvv6v%!'il22mvvv6{*R+9=V,26m,,lv%!=V,l66r-=V,l66-=V,l66-=Vlr22-=V,l62-6$vV"VvvV6vVVv$6V6=Vlr26-2RrvB2rvvvemvemve-emVlr22eB=mvvldD=Vlr22-o9=


Er gebeurt dus in de VB code nog niets aan inverten als ik het goed heb, dus welke code moet ik dan gebruiken om inverten op de Netduino plaats te laten vinden?

[Voor 89% gewijzigd door Gé Brander op 07-10-2012 12:55]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Tjsa, ben nu een beetje aan het onderzoeken hoe de bytes eruitzien als je loopt te spelen met de parity instellingen en aantal databits. Dat lijkt dus wel iets consistentere berichten op te leveren. Maar ik zou niet weten hoe je daarmee zou kunnen helpen...

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Ik heb nog eens getest met de code uit:
https://skydrive.live.com...=66A1B30928B97B4F%2129344

Data wordt nu wel weggeschreven, maar niet juist. De data wordt wel weggeschreven, maar elk bericht wordt verdeeld over verschillende bestanden.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Handdoek, ring.

Het valt me zwaar, maar 'k krijg het niet voor mekaar (hé, dat rijmt!)

We gaan dus even wachten op de 7404 chip en dan hebben we tenminste alledrie dezelfde configuratie. Waarschijnlijk gaat het dan wél goed lukken.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Met de code van C700 ga ik vanavond en/of morgenochtend aan de gang. Het wijkt erg af van wat Hans uit de P1 krijgt, ik vermoede al zoiets. Ik zal kijken of ik het aan de praat krijg maar stel toch voor om er een IC tussen te zetten in het voorbeeld van C700. Daar zitten nl veel voordelen aan vast. De inversie wordt buiten de N+ gedaan, daardoor hou je meer computer tijd over om andere dingen te doen, we praten over een computertje zo groot als een lucifer doosje met maar 25K aan geheugen (na laden alle code). We willen de N+ ook als server waardoor de dure NAS (stroomverbruik) niet meer nodig is.

[Voor 10% gewijzigd door Willie Wortel op 07-10-2012 20:08]


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
c70070540 schreef op zondag 07 oktober 2012 @ 15:38:
Ik heb nog eens getest met de code uit:
https://skydrive.live.com...=66A1B30928B97B4F%2129344

Data wordt nu wel weggeschreven, maar niet juist. De data wordt wel weggeschreven, maar elk bericht wordt verdeeld over verschillende bestanden.
Dat gaat ook niet omdat er EndOfFile Markers worden meegeschreven. Kijk eens in de ASCii tabel ter verduidelijking.

  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Ik heb ook goed nieuws, de server loopt nu 48 uur zonder errors.

  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Ik kan ook alweer stoppen met uitzoeken, de bytes komen niet overeen:

47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13
94 31 31 54 54 70 25 13 25 82 20 33 61 86 44 108 54 114

De reeks boven is de juiste ascii.
De reeks beneden onbewerkt. (beide bron C700)
Kijk naar Byte 31 in de onderste reeks, deze komt 2x voor
Dan moet in de bovenste reeks, in ieder geval de waarde gelijk zijn, en dat is die nie....

dus vb ascii 31 -----> onbehandeld 73
kan niet ineens zijn ----> onbehandeld 83

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Ik snap het niet helemaal. Wat bedoel je met de bovenste rij is de juiste ASCII? Is dat de ASCII codes die je verwacht op basis van de tekst die een bericht zou moeten zijn?

Als ik een bericht, zoals deze uit de P1 poort komt (gemeten met de FTDI RS232-USB kabel op de computer)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/ISk5\2MT382-1003

0-0:96.1.1(5A424556303035303639343233343131)
1-0:1.8.1(01062.794*kWh)
1-0:1.8.2(00596.012*kWh)
1-0:2.8.1(00182.904*kWh)
1-0:2.8.2(00422.393*kWh)
0-0:96.14.0(0001)
1-0:1.7.0(0002.04*kW)
1-0:2.7.0(0000.00*kW)
0-0:17.0.0(0999.00*kW)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3238303131303031323031313038323132)
0-1:24.3.0(121007120000)(00)(60)(1)(0-1:24.2.1)(m3)
(00098.278)
0-1:24.4.0(1)
!

Op de website translate naar
code:
1
47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13 10 13 10 48 45 48 58 57 54 46 49 46 49 40 53 65 52 50 52 53 53 54 51 48 51 48 51 53 51 48 51 54 51 57 51 52 51 50 51 51 51 52 51 49 51 49 41 13 10 49 45 48 58 49 46 56 46 49 40 48 49 48 54 50 46 55 57 52 42 107 87 104 41 13 10 49 45 48 58 49 46 56 46 50 40 48 48 53 57 54 46 48 49 50 42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 49 40 48 48 49 56 50 46 57 48 52 42 107 87 104 41 13 10 49 45 48 58 50 46 56 46 50 40 48 48 52 50 50 46 51 57 51 42 107 87 104 41 13 10 48 45 48 58 57 54 46 49 52 46 48 40 48 48 48 49 41 13 10 49 45 48 58 49 46 55 46 48 40 48 48 48 50 46 48 52 42 107 87 41 13 10 49 45 48 58 50 46 55 46 48 40 48 48 48 48 46 48 48 42 107 87 41 13 10 48 45 48 58 49 55 46 48 46 48 40 48 57 57 57 46 48 48 42 107 87 41 13 10 48 45 48 58 57 54 46 51 46 49 48 40 49 41 13 10 48 45 48 58 57 54 46 49 51 46 49 40 41 13 10 48 45 48 58 57 54 46 49 51 46 48 40 41 13 10 48 45 49 58 50 52 46 49 46 48 40 51 41 13 10 48 45 49 58 57 54 46 49 46 48 40 51 50 51 56 51 48 51 49 51 49 51 48 51 48 51 49 51 50 51 48 51 49 51 49 51 48 51 56 51 50 51 49 51 50 41 13 10 48 45 49 58 50 52 46 51 46 48 40 49 50 49 48 48 55 49 50 48 48 48 48 41 40 48 48 41 40 54 48 41 40 49 41 40 48 45 49 58 50 52 46 50 46 49 41 40 109 51 41 13 10 40 48 48 48 57 56 46 50 55 56 41 13 10 48 45 49 58 50 52 46 52 46 48 40 49 41 13 10 33

Dan komt dat toch overeen met wat ik in het intermediate window zie van Visual Studio als ik de Netduino debug? Bij mij wel in ieder geval...

Echter jouw opmerking:
JoopC schreef op zondag 07 oktober 2012 @ 20:26:
Ik kan ook alweer stoppen met uitzoeken, de bytes komen niet overeen:

47 73 83 107 53 92 50 77 84 51 56 50 45 49 48 48 51 13
94 31 31 54 54 70 25 13 25 82 20 33 61 86 44 108 54 114

De reeks boven is de juiste ascii.
De reeks beneden onbewerkt. (beide bron C700)
Kijk naar Byte 31 in de onderste reeks, deze komt 2x voor
Dan moet in de bovenste reeks, in ieder geval de waarde gelijk zijn, en dat is die nie....

dus vb ascii 31 -----> onbehandeld 73
kan niet ineens zijn ----> onbehandeld 83
Komt op mij over of je een niet inverted verhaal gaat vergelijken met een inverted verhaal. Klopt dat?
Ik denk dat je dat niet mag/kan vergelijken omdat de niet inverted signalen door de Netduino opgevat worden als een EOF of andere signalen.

Daarom is denk ik de 74LS04p weg de enige juiste, omdat je dan een juist signaal aan de Netduino aanbiedt.

Ik zal even proberen het signaal van de P1 poort via de FTDI RS232-USB kabel op te pikken zonder het te inverten. Eens kijken of het dan wel overeenkomt qua codes.

Al blijf ik het wel raar vinden dat ze bij het ontwerp van een communicatiepoort signalen gaan inverten... Waarom zou dat zo zijn?


Edit, onderstaande ZONDER Netduino...
P1 poort uitlezen met de FTDI RS232-USB kabel zonder inversie van het ontvangen signaal, weergegeven als HEX codes
code:
1
2
#28<ESC>#56<LF>
#65#2C#6C#59#5A#32#2D#72#2D#56#5D#59#39#52#56#36#2D#52#5A#72#6D#76#56#56#6C#36#6D#56#32#32#25<SOH><DC4>#4E#2F#36#25#21#45#21#25#4E#6F#56#6D#36#2C#6C#59#5A#72#32#6D#25#4E#2F#52#6D#36#6C#32#2D#32#6D#76#6D#76#76#76#36#6D#25#21#45#25#4E#6F#56#6D#36#2C<DC2>#32#6D#36#6D#2C#6C#59#5A#33#34#27#76#2D#52#25#67#6F#56#6D<DC2>#76<SYN>#76<SYN>#56<DC2>#36<DC2>#76<SYN>#56<DC2>#56<DC2>#76#5A#36#6D#76#2D#32#52#72#76<SYN>#32#52#72#76#76#6D#32#2D#52#65#2D#42#56#25<BEL>#3D#6D#76#76


P1 poort uitlezen met de FTDI RS232-USB kabel met inversie van het ontvangen signaal, weergegeven als HEX codes
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#2F#49#53#6B#35#5C#32#4D#54#33#38#32#2D#31#30#30#33<CR><LF>
<CR><LF>
#30#2D#30#3A#39#36#2E#31#2E#31#28#35#41#34#32#34#35#35#36#33#30#33#30#33#35#33#30#33#36#33#39#33#34#33#32#33#33#33#34#33#31#33#31#29<CR><LF>
#31#2D#30#3A#31#2E#38#2E#31#28#30#31#30#36#39#2E#33#36#35#2A#6B#57#68#29<CR><LF>
#31#2D#30#3A#31#2E#38#2E#32#28#30#30#35#39#36#2E#30#31#32#2A#6B#57#68#29<CR><LF>
#31#2D#30#3A#32#2E#38#2E#31#28#30#30#31#38#35#2E#32#31#32#2A#6B#57#68#29<CR><LF>
#31#2D#30#3A#32#2E#38#2E#32#28#30#30#34#32#32#2E#33#39#33#2A#6B#57#68#29<CR><LF>
#30#2D#30#3A#39#36#2E#31#34#2E#30#28#30#30#30#31#29<CR><LF>
#31#2D#30#3A#31#2E#37#2E#30#28#30#30#30#32#2E#38#37#2A#6B#57#29<CR><LF>
#31#2D#30#3A#32#2E#37#2E#30#28#30#30#30#30#2E#30#30#2A#6B#57#29<CR><LF>
#30#2D#30#3A#31#37#2E#30#2E#30#28#30#39#39#39#2E#30#30#2A#6B#57#29<CR><LF>
#30#2D#30#3A#39#36#2E#33#2E#31#30#28#31#29<CR><LF>
#30#2D#30#3A#39#36#2E#31#33#2E#31#28#29<CR><LF>
#30#2D#30#3A#39#36#2E#31#33#2E#30#28#29<CR><LF>
#30#2D#31#3A#32#34#2E#31#2E#30#28#33#29<CR><LF>
#30#2D#31#3A#39#36#2E#31#2E#30#28#33#32#33#38#33#30#33#31#33#31#33#30#33#30#33#31#33#32#33#30#33#31#33#31#33#30#33#38#33#32#33#31#33#32#29<CR><LF>
#30#2D#31#3A#32#34#2E#33#2E#30#28#31#32#31#30#30#37#32#31#30#30#30#30#29#28#30#30#29#28#36#30#29#28#31#29#28#30#2D#31#3A#32#34#2E#32#2E#31#29#28#6D#33#29<CR><LF>
#28#30#30#30#39#39#2E#33#30#31#29<CR><LF>
#30#2D#31#3A#32#34#2E#34#2E#30#28#31#29<CR><LF>
#21<CR><LF>


Kunnen we dit wel vergelijken? Ook hier zie ik niet de herhaling in terugkomen zoals je zou verwachten met de 1003 tekst die je aan het eind van de eerste regel in het bericht ziet. Die twee nullen zie je netjes terug in de HEX code op positie 15 en 16 maar niet terug in de niet inverted HEX code.

We kunnen nu dus veilig stellen dat we zonder de 74LS04P niet komen waar we willen zijn.

[Voor 132% gewijzigd door Gé Brander op 07-10-2012 21:35]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Signal Inversion

“Normal” TTL serial signaling defines a start bit as a transition from “high” to “low” logic. Logical 1 is “high”, 0 is “low”. But some serial devices turn this logic upside down, using what we call “inverted signaling”. As of version 10, NewSoftSerial supports these devices natively with a third parameter in the constructor

Ja, ik vergelijk de inverted met de niet behandelde bytes.
Kunnen we wel mee stoppen omdat we de functies niet voorhanden hebben, dan zou ik dit moeten herschrijven naar C#. pppffffff
Resumé mee, het is niet zo dat de N+ het niet kan, we hebben gewoon de library niet voorhanden.
http://arduiniana.org/libraries/newsoftserial/

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 // If RX line is high, then we don't see any start bit
  // so interrupt is probably not for us
  if (_inverse_logic ? rx_pin_read() : !rx_pin_read())
  {
    // Wait approximately 1/2 of a bit width to "center" the sample
    tunedDelay(_rx_delay_centering);
    DebugPulse(_DEBUG_PIN2, 1);

    // Read each of the 8 bits
    for (uint8_t i=0x1; i; i <<= 1)
    {
      tunedDelay(_rx_delay_intrabit);
      DebugPulse(_DEBUG_PIN2, 1);
      uint8_t noti = ~i;
      if (rx_pin_read())
        d |= i;
      else // else clause added to ensure function timing is ~balanced
        d &= noti;
    }

    // skip the stop bit
    tunedDelay(_rx_delay_stopbit);
    DebugPulse(_DEBUG_PIN2, 1);

    if (_inverse_logic)
      d = ~d;


Bovenstaande originele arduino invert code is vrij eenvoudig te converteren, zal wel een en ander schrijven als ik de P1 kan uitlezen maar op voorhand ga ik voor de IC.

[Voor 19% gewijzigd door Willie Wortel op 08-10-2012 07:37]


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Hier de vernieuwde sub routine om de ontvangen P1 poort telegram te verwerken in de structure.

Visual Basic .NET:
1
'komt een hele nieuwe aan, veel efficienter.

[Voor 127% gewijzigd door Willie Wortel op 09-10-2012 08:17. Reden: leesbaarheid vergroot.]


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

hansdegit schreef op zondag 07 oktober 2012 @ 17:06:
Handdoek, ring.

Het valt me zwaar, maar 'k krijg het niet voor mekaar (hé, dat rijmt!)

We gaan dus even wachten op de 7404 chip en dan hebben we tenminste alledrie dezelfde configuratie. Waarschijnlijk gaat het dan wél goed lukken.
Zit op de bus, zal er morgen wel zijn.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
c70070540 schreef op maandag 08 oktober 2012 @ 18:13:
[...]

Zit op de bus, zal er morgen wel zijn.
Mooi C700 (je lijkt wel James Bond), kunnen we gaan testen.

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Is er nog iets wat ik vanavond kan testen voor je Joop?

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
c70070540 schreef op maandag 08 oktober 2012 @ 20:14:
Is er nog iets wat ik vanavond kan testen voor je Joop?
Nou, ik ben nu een test programma voor jullie aan het schrijven, maar is nog niet af.
Maar om 9 uur nederland 3 tegenlicht is interessant.
Dus ik weet niet of het vanavond af is.

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

JoopC schreef op maandag 08 oktober 2012 @ 20:20:
[...]

Nou, ik ben nu een test programma voor jullie aan het schrijven, maar is nog niet af.
Maar om 9 uur nederland 3 tegenlicht is interessant.
Dus ik weet niet of het vanavond af is.
Het hoeft ook niet vanavond af hoor.
Ga vooral lekker genieten van andere dingen. Zoals vrouw of zo, ook belangrijk schijnt. ;)

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
c70070540 schreef op dinsdag 02 oktober 2012 @ 19:40:
Kan het hiermee te maken hebben?

[...]

Ik heb een 74LS04P gebruikt om het signaal te inverteren naar de Netduino.

Dit is het schema hoe ik het ga proberen: ;)
[afbeelding]
C700, ben nu een test opstelling aan het hatseflatsen maar wat is nu pin 1 etc op de 7404? Er zit een inkeping op de ic, dus waar moet ik beginnen met tellen.?.
Vrijdagochtend wordt de meter geplaatst, dus alles in orde maken.

BTW de testversie is gereed, zal hem op de skydrive plaatsen.

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

JoopC, de pinlayout is uit de volgende documenten te halen. Kijk goed welke versie van 7404 jij hebt.
http://www.alldatasheet.com/view.jsp?sSearchword=74ls04p

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
c, de IC is binnen. Muchos gracias!

HD74LS04P (2a36). Misschien maar even een printbordje gaan scoren..Of kan ik 'em ergens anders op klemmen/lijmen/solderen?

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Server aan de gang met ingelezen data, werkt goed moet ik zeggen.

Ik heb deze HD74LS04P,

http://pdf1.alldatasheet....61/RENESAS/HD74LS04P.html

pin1 zit dan RECHTS naast de inkeping.

Edit: moet een nieuwe bril kopen.

[Voor 21% gewijzigd door Willie Wortel op 10-10-2012 13:49]


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Cool, dat ziet er leuk uit. Ben benieuwd of het hier net zo soepel gaat. Zet maar op Skydrive dan gooi ik het zo ook even naar mijn Netduino.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
C700, als jij de netduino aangesloten hebt, kijk je dan ook op de monitor mee of...

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

JoopC schreef op dinsdag 09 oktober 2012 @ 13:54:
C700, als jij de netduino aangesloten hebt, kijk je dan ook op de monitor mee of...
Bedoel je daarmee de intermediate window? Indien ja, dan kijk ik daar ook op mee.

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
c70070540 schreef op dinsdag 09 oktober 2012 @ 14:34:
[...]

Bedoel je daarmee de intermediate window? Indien ja, dan kijk ik daar ook op mee.
Daarom heb ik de file aangepast, kan je kijken wat er fout gaat.

Commando,s zijn: test, telegram, directory, getfile, deletefile, loadfile, Netduino:reboot
dus http://[IP]/test

Nou ben ik benieuwd, ik heb in de blind zitten programmeren.

[Voor 11% gewijzigd door Willie Wortel op 09-10-2012 15:01]


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Hoe werkt getfile, deletefile, loadfile ? Ik krijg steeds een 'This page can't be displayed'

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
c70070540 schreef op dinsdag 09 oktober 2012 @ 15:45:
Hoe werkt getfile, deletefile, loadfile ? Ik krijg steeds een 'This page can't be displayed'
Klopt die bestaan niet. :*)

  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Maar het is wel waanzinnig om de Netduino te bedienen bij jou vanaf mijn huisadres.
De webserver doet het goed.

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Haha!!! *O* _/-\o_

Kijk eens wat ik nou uit mijn meter tover?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/ISk5\2MT382-1003

0-0:96.1.1(5A424556303035303639323730333131)
1-0:1.8.1(00778.170*kWh)
1-0:1.8.2(00712.342*kWh)
1-0:2.8.1(00928.606*kWh)
1-0:2.8.2(02088.337*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(0000.00*kW)
1-0:2.7.0(0000.33*kW)
0-0:17.0.0(0999.00*kW)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3238303131303031323130303131303132)
0-1:24.3.0(121009160000)(00)(60)(1)(0-1:24.2.1)(m3)
(00032.838)
0-1:24.4.0(1)
!


Nu eens de build van JoopC proberen.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
hansdegit schreef op dinsdag 09 oktober 2012 @ 16:11:
Haha!!! *O* _/-\o_

Kijk eens wat ik nou uit mijn meter tover?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/ISk5\2MT382-1003

0-0:96.1.1(5A424556303035303639323730333131)
1-0:1.8.1(00778.170*kWh)
1-0:1.8.2(00712.342*kWh)
1-0:2.8.1(00928.606*kWh)
1-0:2.8.2(02088.337*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(0000.00*kW)
1-0:2.7.0(0000.33*kW)
0-0:17.0.0(0999.00*kW)
0-0:96.3.10(1)
0-0:96.13.1()
0-0:96.13.0()
0-1:24.1.0(3)
0-1:96.1.0(3238303131303031323130303131303132)
0-1:24.3.0(121009160000)(00)(60)(1)(0-1:24.2.1)(m3)
(00032.838)
0-1:24.4.0(1)
!


Nu eens de build van JoopC proberen.
Hans, is ieder bericht goed of een enkele?

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Bij hoeveel goed berichten leggen we de grens? Ik had er net een stuk of tien over mijn scherm rollen.
Let wel: is met mijn laatste code. Die checkt of er een 33 binnenkomt, zo ja: einde bericht.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

Wat is 33 dan? De [!] ?
Aha, ik zie het al:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#47#73#83#107#53#92#50#77#84#51#56#50#45#49#48#48#51<CR><LF>
<CR><LF>
#48#45#48#58#57#54#46#49#46#49#40#53#65#52#50#52#53#53#54#51#48#51#48#51#53#51#48#51#54#51#57#51#52#51#50#51#51#51#52#51#49#51#49#41<CR><LF>
#49#45#48#58#49#46#56#46#49#40#48#49#48#55#53#46#49#49#54#42#107#87#104#41<CR><LF>
#49#45#48#58#49#46#56#46#50#40#48#48#54#48#54#46#54#53#55#42#107#87#104#41<CR><LF>
#49#45#48#58#50#46#56#46#49#40#48#48#49#56#53#46#50#49#50#42#107#87#104#41<CR><LF>
#49#45#48#58#50#46#56#46#50#40#48#48#52#50#54#46#49#54#48#42#107#87#104#41<CR><LF>
#48#45#48#58#57#54#46#49#52#46#48#40#48#48#48#50#41<CR><LF>
#49#45#48#58#49#46#55#46#48#40#48#48#48#48#46#48#48#42#107#87#41<CR><LF>
#49#45#48#58#50#46#55#46#48#40#48#48#48#49#46#48#48#42#107#87#41<CR><LF>
#48#45#48#58#49#55#46#48#46#48#40#48#57#57#57#46#48#48#42#107#87#41<CR><LF>
#48#45#48#58#57#54#46#51#46#49#48#40#49#41<CR><LF>
#48#45#48#58#57#54#46#49#51#46#49#40#41<CR><LF>
#48#45#48#58#57#54#46#49#51#46#48#40#41<CR><LF>
#48#45#49#58#50#52#46#49#46#48#40#51#41<CR><LF>
#48#45#49#58#57#54#46#49#46#48#40#51#50#51#56#51#48#51#49#51#49#51#48#51#48#51#49#51#50#51#48#51#49#51#49#51#48#51#56#51#50#51#49#51#50#41<CR><LF>
#48#45#49#58#50#52#46#51#46#48#40#49#50#49#48#48#57#49#54#48#48#48#48#41#40#48#48#41#40#54#48#41#40#49#41#40#48#45#49#58#50#52#46#50#46#49#41#40#109#51#41<CR><LF>
#40#48#48#49#48#52#46#48#55#52#41<CR><LF>
#48#45#49#58#50#52#46#52#46#48#40#49#41<CR><LF>
#33<CR><LF>

[Voor 97% gewijzigd door Gé Brander op 09-10-2012 16:31]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Ja, 33 is uitroepteken. Daarop volgt nog wel een CR/LF, maar dat was voor deze test niet zo van belang. Dus eigenlijk is het zuiverder om einde bericht te roepen als er "33 13 10" langskomt.

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
JoopC schreef op dinsdag 09 oktober 2012 @ 16:14:
[...]

Hans, is ieder bericht goed of een enkele?
Nee, er staan naar mening teveel door GC geleverde kWh's op en die stand van het gas bevalt me ook niet, maar technisch zien alle berichten er goed uit.

8)

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19:51

Gé Brander

MS SQL Server

hansdegit schreef op dinsdag 09 oktober 2012 @ 16:58:
[...]

Nee, er staan naar mening teveel door GC geleverde kWh's op en die stand van het gas bevalt me ook niet, maar technisch zien alle berichten er goed uit.

8)
LOL! _/-\o_

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Wat is de link naar de juiste sourcecode op de skydrive? Ben benieuwd...

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
Ik moet eerst nog een paar aanpassingen doen, het werkt nog niet zoals het hoort.

  • reddo
  • Registratie: Oktober 2010
  • Laatst online: 22:59
Hier schijnt het gel;ukt te zijn m et een Arduino, misschien handig ??

http://zonnigbreda.blogsp...ting-online-met-cosm.html

http://www.pvoutput.org/intraday.jsp?id=13642&sid=11522


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
JoopC schreef op dinsdag 09 oktober 2012 @ 20:58:
Ik moet eerst nog een paar aanpassingen doen, het werkt nog niet zoals het hoort.
En? Heb je de fout gevonden?

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
reddo schreef op woensdag 10 oktober 2012 @ 22:28:
Hier schijnt het gel;ukt te zijn m et een Arduino, misschien handig ??

http://zonnigbreda.blogsp...ting-online-met-cosm.html
Reddo, ziet er goed uit zeg, knap gedaan. Heb je ook een link van je datalogging of is dat private?

  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
hansdegit schreef op zaterdag 13 oktober 2012 @ 13:38:
[...]

En? Heb je de fout gevonden?
Alle code die ik had geschreven kan de vuilnisbak in.

  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Waarom zo negatief? Wat is er gebeurd? Hoe kunnen we helpen?

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1


  • Willie Wortel
  • Registratie: Maart 2012
  • Niet online
hansdegit schreef op maandag 15 oktober 2012 @ 20:42:
Waarom zo negatief? Wat is er gebeurd? Hoe kunnen we helpen?
Hans heb, je al wat gedaan aan de P1 poort website?
De json data die nodig is in de website, zodat ik de routines kan schrijven.

Edit:
Ik denk aan een goedkope tablet aan de muur en een website met tab bladen ivm verschillende data.
Ben al aan het proberen.

[Voor 16% gewijzigd door Willie Wortel op 15-10-2012 21:43]


  • hansdegit
  • Registratie: Februari 2005
  • Laatst online: 29-03 17:35
Die website wordt een copy/paste van mijn zonnewebsite. Een cacher die de database bevraagt en in JSON uitspuugt en een logger die de door de Netduino verzamelde data in de database plempt.

En dan ben ik dus een beetje afhankelijk van de manier waarop we de p1 data gaan vastleggen. In een csv file per dag? Of een vraag/antwoord spelletje?

Voor mij hoeft die website op de Netduino niet zo uitgebreid hoor. Gewoon de verzamelde data vanaf moment x weergeven, that's it. Beetje zoals de Youless?

edit:
zitten we in een deadlock? Vraag jij nu aan mij hoe ik het wil hebben zodat jij de routines kunt schrijven terwijl ik zit te wachten hoe jij de website in elkaar flanst?

[Voor 15% gewijzigd door hansdegit op 15-10-2012 22:30]

Gitje's Stroomfabriek: 6095 Wp Yingli Panda, 2520 Wp Suntech, Tigo Monitoring & Schaduwmanagement, Kostal Piko 10.1

Pagina: 1 2 3 ... 7 Laatste


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee