-
Notifications
You must be signed in to change notification settings - Fork 33
Description
Hi Yallie,
here is a little bit about my Zyan project on Windows, Linux and Linux on Raspberry PI 2/3.
The project is about a Time Tracking Solution, Raspberry PI with Touch Panel 3,5" and RFID reader. Should act as time tracking terminal and optional as area access terminal via a relay or led to simulate access.
All the components are wired on a breadboard and are working fine. Raspberry IO are managed via Raspberry IO General Purpose assembly on NuGet.
The environment is as following:
I have a Windows Zyan Host (Dispatcher) running as service.
I have 4 Zyan Hosts called Agent, 1 on Windows, 1 on Linux Ubuntu with Mono and 2 on Linux Ubuntu with Mono on Raspberry PI 3b.
The Windows Dispatcher is the central program making requests to the clients (agents) and receives request from the clients (agents).
Windows Agent and Linux Agent on Ubuntu are only for testing/debugging purpose. The two Raspberry Linux Agents are the real time tracking and area access terminals.
Raspberry agents have MongoDB locally installed and save the actual time bookings in the database and send a time booking request to the dispatcher (windows service) if available. If not available, later the dispatcher tries to get the bookings from the agents.
Bidirectional Communication and it works.. (Windows <-> Linux/Mono, Windows <-> Raspberry/Mono, Linux/Mono <-> Raspberry/Mono)
But...I have some strange behavior:
Sending request from the dispatcher:
- to a windows agent
(works fine within milliseconds)
- to a linux/ubuntu/mono agent
(does not work on first call, after a retry the request it works within milliseconds)
- to a linux/ubuntu/mono/raspberry
(same behavior as before)
If a make a "QueryAlive" request to all my agents, the first Linux/Mono gets an error with the following message:
Cannot create channel sink to connect to URL /98b09d86_a7b0_4134_91fd_a73b5be56b4a/tuemzdslijppnf8agyjtj7li_3.rem. An appropriate channel has probably not been registered.
If I try it just after this call, every is fine. First call does not succeed.
Every agent has a method to send booking data to the dispatcher, this is the behavior:
- sending from windows/agent to windows/dispatcher
(everything is fine within milliseconds)
- sending from ubuntu/mono real workstation to windows/dispatcher
(everything is fine within milliseconds)
- sending from Raspberry/ubuntu/mono to windows/dispatcher
(works, but the time connection to dispatcher varies from 3 to 12 seconds)
This is my method to contact the agents/dispatcher...
using (var conn = new ZyanConnection(url, protocol))
{
var proxy = conn.CreateProxy();
var ts = proxy.QueryAlive();
}
Any idea about this behavior???
But it works with the workarounds.
Thanks, Jens.