Giter Site home page Giter Site logo

probonopd / wirelessprinting Goto Github PK

View Code? Open in Web Editor NEW
353.0 31.0 66.0 377 KB

Print wirelessly from Cura, PrusaSlicer or Slic3r to your 3D printer connected to an ESP8266 or ESP32 module

C++ 100.00%
esp8266 esp 3d-printing cura cura-plugin wlan marlin arduino

wirelessprinting's Introduction

WirelessPrinting Build Status

Print wirelessly from Cura, PrusaControl, or Slic3r PE to your 3D printer connected to an ESP8266 module.

UNDER DEVELOPMENT. See Issues. Pull requests welcome!

Comparison with other printer hosts

Printer SD card slot OctoPrint WirelessPrint
Instant Booting can take minutes Booting takes seconds
Need to plug SD card into computer and then into printer for each print Ethernet and wireless Wireless
No cost (comes with many printers) High cost (Raspberry Pi, Power supply, SD card) Inexpensive
No clutter on desktop Clutter on desktop (Raspberry Pi, cable) No clutter (can be placed inside printer electronics box)
No set-up needed Set-up needed (full Linux operating system, hundreds of megabytes) Only quick wireless network setup needed
No maintenance needed (other than replacing broken SD card slots) High maintenance needed (OS updates) Low maintenance needed (Firmware updates for bugfixes and new features)
No extra power consumption 2.5 W power consumption Under 1 W power consumption
No webcam Webcam can be attached ESP32 module with built-in camera (may be supported in the future)
No notifications Notifications, e.g., "print ready" Notifications possible (send pull requests)
Cumbersome for print farms (sneakernet) Suitable for print farms (can be managed centrally) Suitable for print farms (can be managed centrally, OctoPrint compatible protocol subset)

Hardware

WEMOS D1 mini modules can be used. Also, ESP32 modules can be used (e.g., TTGO-T1 with built-in microSD card slot).

The WEMOS D1 mini module is connected with your 3D printer via the serial connection and to a SD card (acting as a cache during printing). You need to connect

  • TX, RX from your 3D printer to the WEMOS D1 mini module (AUX-1 header on RAMPS boards). Note: For ESP32, use GPIO32 = RX, GPIO33 = TX
  • Power and GND from your 3D printer to the WEMOS D1 mini module (attention, the AUX-1 header on RAMPS boards has 5V while the ESP8266 needs 3.3V but the WEMOS D1 mini has a voltage regulator)
  • Optional: SD card shield to the WEMOS D1 mini module (a capacitor across the power pins of the SD card; SD shields have this). Using a SanDisk 2 GB card formatted with mkfs.vfat on Linux seems to work for me. If no SD card is connected, then the internal SPIFFS memory (3 MB) is used. For TTGO-T1, the built-in microSD card slot is used if a card is inserted.
  • A matching case for a WEMOS D1 mini module and microSD shield can be found at http://www.thingiverse.com/thing:2287618

esp8266/Arduino sketch

The esp8266/Arduino sketch ESP8266WirelessPrintAsync.ino is uploaded to a ESP8266 module. See .travis.yml for how this is compiled on Travis CI.

Building

Pre-built binaries are available for download on GitHub Releases.

The following build procedure works on Linux:

# Get PlatformIO (the toolchain we use for compiling)
git clone https://github.com/probonopd/WirelessPrinting
cd WirelessPrinting
wget -c https://downloads.egenix.com/python/install-pyrun
bash install-pyrun --python=3.5 pyrun/
pyrun/bin/pip3 install -U platformio==4.2.1

# Build the firmware (it downloads the needed libraries)
pyrun/bin/platformio run
find . -name "*firmware.bin"

Flashing from Linux

Can be flashed via USB or (subsequently) over the air. You can use PlatformIO to upload to either OTA and flash via any known flash method. See e.g., https://docs.platformio.org/en/latest/platforms/espressif8266.html#over-the-air-ota-update, https://docs.platformio.org/en/latest/platforms/espressif32.html#packages.

If you are not using PlatformIO (e.g., because you are just interested in uploading our pre-built firmware as quickly as possible) you may use the following instructions.

ESP8266

# USB
sudo chmod a+rwx /dev/ttyUSB0 ; /tmp/.mount_*/usr/bin/hardware/esp8266/esp8266/tools/esptool/esptool -vv -cd nodemcu -cb 921600 -cp /dev/ttyUSB0 -ca 0x00000 -cf ESP8266WirelessPrint*.bin

# Wireless
wget -c "https://raw.githubusercontent.com/esp8266/Arduino/master/tools/espota.py"
python espota.py -i 192.168.0.27 -p 8266 --auth= -f ESP8266WirelessPrint*.bin
ESP32
# USB
sudo apt install python-serial
sudo chmod a+rwx /dev/ttyUSB0 ; python $HOME/.arduino15/packages/esp32/tools/esptool_py/2.6.0/esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash 0x10000 ESP8266WirelessPrintAsync_esp32_*.bin

# Wireless
python $HOME/.arduino15/packages/esp32/hardware/esp32/1.0.1/tools/espota.py -i 192.168.0.16 -p 3232 --auth= -f ESP8266WirelessPrintAsync_esp32_*.bin

After the initial flashing, you can upload new versions of this firmware from the web interface without any further tools.

Initial WiFi Configuration

Following the instructions in https://github.com/alanswx/ESPAsyncWiFiManager/ :

The first time the sketch is uploaded the ESP will enter in Access Point mode, so you have to open the wifi manager of your system and connect to wifi "AutoConnectAP", then open your browser and type http://192.168.4.1/, there you will see a menu, select "Configure WiFi", press scan and wait until the device scans available networks and select yours, enter the the password and click save. It will try to connect to your network, if it's successfull you will see a message on your 3D printer (or in a serial monitor if conected to your computer) with the new device IP, write down this IP if you wish to connect via browser.

Wireless printing with Cura

Cura 2.6 and later come with a bundled plugin which discovers OctoPrint instances using Zeroconf and enables printing directly to them. In newer versions of Cura, you need to install the Cura OctoPrint Plugin from the "Toolbox" menu. To use it,

  • In Cura, add a Printer matching the 3D printer you have connected to WirelessPrint
  • Select "Connect to OctoPrint" on the Manage Printers page
  • Select your OctoPrint instance from the list
  • Enter an API key (for now a random one is sufficient)
  • Click "Connect", then click "Close" From this point on, the print monitor should be functional and you should see a "Print with OctoPrint" button on the bottom of the sidebar. Use this button to print wirelessly.

Wireless printing with PrusaSlicer

Slic3r PE 1.36.0 discovers OctoPrint instances using Zeroconf and enables printing directly to them. No further software needs to be installed. To use it,

  • In Slic3r PE, add the corresponding profile for your printer
  • Select the "Printer Settings" tab
  • Under "OctoPrint upload", enter the IP address of your WirelessPrinting device (in the future, it may be discoverable by Bonjour)
  • Click "Test" From this point on, you should see a "Send to printer" button on the "Plater" tab. Use this button to print wirelessly.

Later PrusaSlicer versions may require you to enter the IP address manually (bug?).

Wireless printing using a browser or the command line

To print, just open http://the-ip-address/ and upload a G-Code file using the form:

Upload

Ycan also print from the command line using curl:

curl -F "file=@/path/to/some.gcode" -F "print=true" http://the-ip-address/print

wirelessprinting's People

Contributors

ayushsharma82 avatar chepo92 avatar cpeuschel avatar gmagician avatar probonopd avatar theassassin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wirelessprinting's Issues

Stops printing after ca. 26 minutes

Had it stop printing after ca. 26 minutes. Is this because the HTTP request times out at some point? Would it be more stable if we did not send the printer <-> ESP8266 communication as a HTTP response while printing?

The last lines of communication:

#18785
--> G0 X33.645 Y38.171
<-- G0 X33.645 Y38.171
<-- ok
GOT OK

#18786
--> G0 F3000 X34.846 Y38.241
<-- G0 F3000 X34.846 Y38.241
<-- ok
GOT OK

#18787
--> G1 F6000 X37.363 Y40.757 E780.3733
<-- G1 F6000 X37.363 Y40.757 E780.3733
<-- ok
GOT OK

(Stalled here)

curl: (56) Recv failure: Connection timed out

The SP8266 then rebooted after an additional ca. 3-5 minutes.

Can this be reproduced?

Slic3r PE does not find WirelessPrinting via Zeroconf

Slic3r does

            my $host_line = $optgroup->create_single_option_line('print_host');
            $host_line->append_button("Browse…", "zoom.png", sub {
                # look for devices
                my $entries;
                {
                    my $res = Net::Bonjour->new('http');
                    $res->discover;
                    $entries = [ $res->entries ];
                }
                if (@{$entries}) {
                    my $dlg = Slic3r::GUI::BonjourBrowser->new($self, $entries);
                    if ($dlg->ShowModal == wxID_OK) {
                        my $value = $dlg->GetValue . ":" . $dlg->GetPort;
                        $self->config->set('print_host', $value);
                        $self->_on_value_change('print_host');
                    }
                } else {
                    Wx::MessageDialog->new($self, 'No Bonjour device found', 'Device Browser', wxOK | wxICON_INFORMATION)->ShowModal;
}

https://github.com/slic3r/Slic3r/blob/19ea7a596a19e7a59ddb2ae2f3dde8c107bd9d11/lib/Slic3r/GUI/PresetEditor.pm#L1326

However, it does not find my printers:

$ avahi-browse -avr
(...)
= enp0s25 IPv4 Prusa i3 MK2 (3956ef)                         Web Site             local
   hostname = [esp8266-3956ef.local]
   address = [192.168.0.21]
   port = [80]
   txt = ["version=1.2.10" "api=0.1" "path=/"]
= enp0s25 IPv4 RF100 (394e90)                                Web Site             local
   hostname = [esp8266-394e90.local]
   address = [192.168.0.16]
   port = [80]
   txt = ["version=1.2.10" "api=0.1" "path=/"]
= enp0s25 IPv4 OpenWrt                                       Web Site             local
   hostname = [OpenWrt.local]
   address = [192.168.0.11]
   port = [80]
   txt = ["path=/"]
= enp0s25 IPv4 osmc                                          Web Site             local
   hostname = [osmc.local]
   address = [192.168.0.10]
   port = [80]
   txt = []

It does find osmc, though (which is not even a 3D printer at all).

Why?

Problem with Cura

I connect to Cura ,its show plugin all is perfect but nothing happened when try print .. lost connection I try several times but not success? Check with with 3.3.0 and 3.3.1 v. not luck

[Question] Doubt about code

  while (serverClient.available()) { // get data from Client
    Serial.write(serverClient.read());

shouldn't this while code be:

  while (serverClient && serverClient.available()) { // get data from Client
    Serial.write(serverClient.read());

Wrong temperature parsing with some printers

To implement Printer Monitor, we need to get data from the printer all the time. UM3 does this by polling the device for JSON files all the time. I did not go down this route since I can imagine it might interfere with the smooth sending of G-Code over the serial line. Also, the esp8266/Arduino HTTP library only supports one connection at a time.

Is there a better (and more resource-saving) way to do this on the ESP8266, e.g., using MQTT?

Printer Monitor

Replace curl subprocess with native uploading

Replace this call to the curl binary with native uploading:

fd = open('/tmp/' + fileName, "w")
fd.write (self._stream.getvalue())
fd.close()

command = 'curl -F "file=@/tmp/' + fileName + '" ' + url
Logger.log("d", command)

import subprocess, shlex
subprocess.Popen(shlex.split(command))

This is how the working communication (using curl which we want to get rid of) looks like:

me@host:~$ curl -v -F "file=@/tmp/RR_knubbel_coupler.gcode" http://3d.local/print
*   Trying 192.168.0.17...
* Connected to 3d.local (192.168.0.17) port 80 (#0)
> POST /print HTTP/1.1
> Host: 3d.local
> User-Agent: curl/7.47.0
> Accept: */*
> Content-Length: 1230488
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------8ab61be1ce5fe9cf
> 
* Done waiting for 100-continue
< HTTP/1.1 200 OK
< Content-Type: text/json
< Accept-Ranges: none
< Transfer-Encoding: chunked
< Connection: close

During upload the Cura GUI should show a progress bar.

Pull requests welcome.

[Question] About handlePrint function content

Hi, sorry again to bother but I think I'm missing something in analyzing handlePrint function.

it seems that code is exacly the same when hasSD is true or false (only filename is different). In such case it would be more readable to don't create redundant code.

Please I don't want to hurt you with all such question about coding style but I'm analyzing your code to learn something about how you managed all this (I'm not so skilled in arduino programming) and I wan't to be ready to manage this by myself to use it in my printer...

Change name of file

What about renaming file and folder 'ESP8266WirelessPrintAsync' to just 'WirelessPrint', seems more friendly

Support ESP32

ESP32 support would be desirable as there are nice, inexpensive ESP32 boards available with built-in SD card slots, e.g., the TTGO-T1 V1.3. There are even inexpensive boards with built-in camera.

UPDATE 3/2019: Basic functionality working.

Time reported in Cura is wrong

I have completed of 3647725 bytes, which is 90.82% (correct).
This has taken 6244 seconds = 104 minutes so far (correct).

Hence, I would expect it to need another 6244/90.82*(100-90.82) = 631 seconds.

{
  "job": {
    "file": {
      "name": "RR_TabletStand.gcode",
      "origin": "local",
      "size": 3647725,
      "date": 1378847754
    },
    "estimatedPrintTime": 8811,
    "filament": {
      "length": 810,
      "volume": 5.36
    }
  },
  "progress": {
    "completion": 90.82,
    "filepos": 3312960,
    "printTime": 6244,
    "printTimeLeft": 57303
  }
}

Zeroconf not automatically detecting printer on launch

Zeroconf is not automatically detecting printer on launch. Currently we have to:

  • Preferences -> Configure Cura... -> Printers
  • Click on your 3D printer instance
  • Click on "Connect WirelessPrint"
  • Select your 3D printer
  • Click on "Refresh"

In the upper right-hand corner of Cura, the printer icon should now have a green checkmark.

  • Press "Close"
  • Press "Close"
  • Load a model into Cura
  • In the bottom right-hand corner, click the arrow next to the "Save to File" button and select "Print on <name of your 3D printer>".

This should be automated. Pull requests welcome.

The Ultimaker 3 and the OctoPrint Cura plugin don't seem to suffer from this.

Trouble finding library

I don't really understand on what I need to do with the 4 HTTPS links. I downloaded them and put them i my Arduino 1.6.9 library folder, but when i open Arduino and look in the >file
>examples
When i try to upload the sckech to my board i get this error:

`C:\Users\NUNYOURBUSSINESS\AppData\Local\Temp\Temp1_WirelessPrinting-master.zip\WirelessPrinting-master\ESP8266WirelessPrintAsync\ESP8266WirelessPrintAsync.ino:30:26: fatal error: SPIFFSEditor.h: No such file or directory

#include <SPIFFSEditor.h>

                      ^

compilation terminated.

exit status 1
Error compiling for board LOLIN(WEMOS) D1 mini Pro.`

Yeah.

Bailey

Does not work in Cura 2.5: 'cura.Settings.CuraContainerRegistry' has no attribute 'getInstance'

me@host:~$ ./Downloads/Cura-2.5.0-BETA.AppImage 2>&1 | grep ERROR
2017-03-25 16:51:51,723 - ERROR - UM.PluginRegistry.loadPlugin [91]: Plugin VersionUpgrade24to25 did not return any objects to register
2017-03-25 16:51:51,785 - ERROR - UM.Logger.logException [74]: Exception: Error loading plugin WirelessPrinting:
2017-03-25 16:51:51,787 - ERROR - UM.Logger.logException [78]: Traceback (most recent call last):
2017-03-25 16:51:51,788 - ERROR - UM.Logger.logException [78]:   File "/build/2.5/build/inst/lib/python3/dist-packages/UM/PluginRegistry.py", line 89, in loadPlugin
2017-03-25 16:51:51,790 - ERROR - UM.Logger.logException [78]:   File "/home/me/.local/share/cura/plugins/WirelessPrinting/__init__.py", line 21, in register
2017-03-25 16:51:51,791 - ERROR - UM.Logger.logException [78]:     "machine_action": DiscoverWirelessPrintAction.DiscoverWirelessPrintAction()
2017-03-25 16:51:51,793 - ERROR - UM.Logger.logException [78]:   File "/home/me/.local/share/cura/plugins/WirelessPrinting/DiscoverWirelessPrintAction.py", line 29, in __init__
2017-03-25 16:51:51,794 - ERROR - UM.Logger.logException [78]:     cura.Settings.CuraContainerRegistry.getInstance().containerAdded.connect(self._onContainerAdded)
2017-03-25 16:51:51,796 - ERROR - UM.Logger.logException [78]: AttributeError: module 'cura.Settings.CuraContainerRegistry' has no attribute 'getInstance'

boot-up fail?

How printer is recognized? is it queried or ESP module is waiting for printer to say anything on serial port? In my case only thing from ESP is:

ets Jan 8 2013,rst cause:2, boot mode:(3,7)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v614f7c32
~ld

sent at 74880 baud then nothing at 250000 which is correct for my printer and set in source. It behave like in issue https://github.com/probonopd/WirelessPrinting/issues/19#issue-249802004 no web interface, can ping and connect to telnet but no reaction to anything written there, After reset printer is sending:

start
echo: External Reset
Marlin1.0.0
echo: Last Updated: Jan 4 2016 19:03:56 | Author: (John, default config)
Compiled: Jan 4 2016
echo: Free Memory: 3795 PlannerBufferBytes: 1232
echo:Hardcoded Default Settings Loaded
echo:Steps per unit:
echo: M92 X78.74 Y78.74 Z2560.00 E105.00
echo:Maximum feedrates (mm/s):
echo: M203 X400.00 Y400.00 Z2.00 E45.00
echo:Maximum Acceleration (mm/s2):
echo: M201 X1400 Y1400 Z100 E80000
echo:Acceleration: S=acceleration, T=retract acceleration
echo: M204 S1400.00 T5000.00
echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)
echo: M205 S0.00 T0.00 B20000 X13.50 Z0.30 E5.00
echo:Home offset (mm):
echo: M206 X0.00 Y0.00 Z0.00
echo:PID settings:
echo: M301 P19.86 I1.00 D98.93
echo:SD card ok

Firmware built on Travis CI cannot connect to WLAN

To be investigated:
Firmware built on Travis CI cannot connect to WLAN?

Command used to flash:

# USB
 sudo chmod a+x /dev/ttyUSB0
`/tmp/.mount_*/usr/bin/hardware/esp8266/esp8266/tools/esptool/esptool -vv -cd nodemcu -cb 921600 -cp /dev/ttyUSB0 -ca 0x00000 -cf ESP8266WirelessPrint_d1_mini_08d8b11.bin

# Wireless
python /tmp/.mount_*/usr/bin/hardware/esp8266/esp8266/tools/espota.py -i 192.168.0.27 -p 8266 --auth= -f ESP8266WirelessPrint_d1_mini_ffd4b94.bin

enhancement request: Integration for autodrop3d

Hello,

I have been developing system for a completely unmanned 3d printing.
Currently I have been using a script running on a raspberry pi but I think that could be replaced with this project.

Currently the pi downloads the gcode file from a http server and then prints it. After the item is printed and eject from the printer it notifys the server via a http request that it is competed and it repeats the cycle.

If it is possible to make the esp download a gcode from a server and store it to the sd card and then print from the sd card I think I could replace the pi in my set up.

Would be willing to contribute some cash and work on this with some one.

Consider to support IPP 3D Extensions defined by ISTO Printer Working Group

You should consider to follow the 3D printing developments currently being worked on by the ISTO Printer Working Group (PWG) with the goal of adding 3D related extensions to the Internet Printing Protocol (IPP).

BTW, the ippsample project already has support for 3D spec/standad testing already included. Just enable the transform3d binary to be built (which requires additional dependencies, f.e. Cura).

Preheat extruder when starting upload?

Should we preheat the build plate e.g., to 40 degrees C, and the extruder, e.g., to 150 degrees C, when starting an upload, so that the heating already takes place while the code is still being uploaded?

What do people think?

Wifi flashing marlin with this method

sorry not really an issue just a big hope!

Would it be possible to update or reflash my printer with marlin using this method?
this would make things so much easier if i didnt have to keep my old laptop near the printer to make changes and updates to marlin on the 3d printer....

Implement "Abort Print" function

Implement "Abort Print" function (there is a button for it in the Cura GUI on the "Printer Monitor" tab).

How would this actually have to work? Skip all commands until the ;End GCode?

My printer likes something like this to end a print:

;End GCode
M104 S0 ;extruder heater off
M140 S0 ;heated bed heater off (if you have it)
G91 ;relative positioning
G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure
G1 Z+0.5 E-5 X-20 Y-20 F50.0 ;move Z up a bit and retract filament even more
G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way
M84 ;steppers off
G90 ;absolute positioning
M104 S0

Is there a generic way to do this, or can I query the (Marlin) printer for the correct end sequence?

[Question] What happens when print is aborted?

I'm trying to learn code and I find something that I don't understand, when printer is aborted.

Your code looks like:

        if(shouldCancelPrint == true){
          shouldCancelPrint == false;
          isPrinting = false;
          return;
        }

return exit from function and so gcodeFile.close() and statusTimer.attach(statusInterval, askPrinterForStatus) are never called. Where do these things are restore?

Gibberish from ESP on serial line can lock up Marlin boot?

Gibberish from ESP on serial line can lock up Marlin boot?

When I connect the ESP to a RF100 with Marlin 1.1.8 and power both on simultaneously, the printer's screen flickers for a long time during boot and once Marlin is booted, WirelessPrinting does not work.

(As far as I remember, this was not the case before probonopd/RF100-Firmware@bec7a47)

If I connect the ESP's TX line half a second or so after having it powered on, then it works.

Is this caused by the gibberish (boot log from the ROM) coming from the ESP during its boot?

Should try esp8266/Arduino#3047 (comment)

[Question] spiffs and write cycles

Reading documentation it's said that use of spiffs is for data "almost" invariable I think this is due to limited flash write cycles (I read somewhere about 10000). Is it not too dangerous to use such memory for gcode files? It's true that a file a day is almost 27 years but...

Get "SD Card ERROR" with some cards

Some (many?) SD cards give "SD Card ERROR".

This is what works for me:

  • 2 GB SanDisk microSD
  • Formatted with the SD Card Formatter from the SD Association
  • Sometimes I have to put a 8+3 file on it using Linux
  • Sometimes I have to insert a non-working SD card until the "good" card starts working.

Also see esp8266/Arduino#2407

Compatibility with OctoPrint

According to https://forum.simplify3d.com/viewtopic.php?f=23&t=1924&start=10 one can print to OctoPrint like this:

curl -H "X-Api-Key: 185A556C8F684E20AAB85F2D867F2791" -F "select=false" -F "print=false" -F "file=@[output_filepath]" "http://192.168.2.197/api/files/local"

Slic3r has a GUI option to print to OctoPrint, and it discovers OctoPrint instances using ZeroConf.

Should we make WirelessPrinting announce itself on the network as an OctoPrint instance? This would seemingly give us "free" support in Slic3r and possibly in other 3D printing software.

Error While compiling

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp: In constructor 'AsyncClient::AsyncClient(tcp_pcb*)':

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:78:28: error: invalid conversion from 'long int (*)(void*, tcp_pcb*, pbuf*, long int)' to 'tcp_recv_fn {aka signed char (*)(void*, tcp_pcb*, pbuf*, signed char)}' [-fpermissive]

     tcp_recv(_pcb, &_s_recv);

                            ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:318:18: error:   initializing argument 2 of 'void tcp_recv(tcp_pcb*, tcp_recv_fn)' [-fpermissive]

 void             tcp_recv    (struct tcp_pcb *pcb, tcp_recv_fn recv) ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:79:28: error: invalid conversion from 'long int (*)(void*, tcp_pcb*, uint16_t) {aka long int (*)(void*, tcp_pcb*, short unsigned int)}' to 'tcp_sent_fn {aka signed char (*)(void*, tcp_pcb*, short unsigned int)}' [-fpermissive]

     tcp_sent(_pcb, &_s_sent);

                            ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:319:18: error:   initializing argument 2 of 'void tcp_sent(tcp_pcb*, tcp_sent_fn)' [-fpermissive]

 void             tcp_sent    (struct tcp_pcb *pcb, tcp_sent_fn sent)ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:80:28: error: invalid conversion from 'void (*)(void*, long int)' to 'tcp_err_fn {aka void (*)(void*, signed char)}' [-fpermissive]

     tcp_err(_pcb, &_s_error);

                            ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:321:18: error:   initializing argument 2 of 'void tcp_err(tcp_pcb*, tcp_err_fn)' [-fpermissive]

 void             tcp_err     (struct tcp_pcb *pcb, tcp_err_fn err)ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:81:31: error: invalid conversion from 'long int (*)(void*, tcp_pcb*)' to 'tcp_poll_fn {aka signed char (*)(void*, tcp_pcb*)}' [-fpermissive]

     tcp_poll(_pcb, &_s_poll, 1);

                               ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:320:18: error:   initializing argument 2 of 'void tcp_poll(tcp_pcb*, tcp_poll_fn, u8_t)' [-fpermissive]

 void             tcp_poll    (struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval)ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp: In member function 'bool AsyncClient::connect(IPAddress, uint16_t)':

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:130:25: error: invalid conversion from 'void (*)(void*, long int)' to 'tcp_err_fn {aka void (*)(void*, signed char)}' [-fpermissive]

   tcp_err(pcb, &_s_error);

                         ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:321:18: error:   initializing argument 2 of 'void tcp_err(tcp_pcb*, tcp_err_fn)' [-fpermissive]

 void             tcp_err     (struct tcp_pcb *pcb, tcp_err_fn err)ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp: In member function 'AsyncClient& AsyncClient::operator=(const AsyncClient&)':

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:168:28: error: invalid conversion from 'long int (*)(void*, tcp_pcb*, pbuf*, long int)' to 'tcp_recv_fn {aka signed char (*)(void*, tcp_pcb*, pbuf*, signed char)}' [-fpermissive]

     tcp_recv(_pcb, &_s_recv);

                            ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:318:18: error:   initializing argument 2 of 'void tcp_recv(tcp_pcb*, tcp_recv_fn)' [-fpermissive]

 void             tcp_recv    (struct tcp_pcb *pcb, tcp_recv_fn recv) ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:169:28: error: invalid conversion from 'long int (*)(void*, tcp_pcb*, uint16_t) {aka long int (*)(void*, tcp_pcb*, short unsigned int)}' to 'tcp_sent_fn {aka signed char (*)(void*, tcp_pcb*, short unsigned int)}' [-fpermissive]

     tcp_sent(_pcb, &_s_sent);

                            ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:319:18: error:   initializing argument 2 of 'void tcp_sent(tcp_pcb*, tcp_sent_fn)' [-fpermissive]

 void             tcp_sent    (struct tcp_pcb *pcb, tcp_sent_fn sent)ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:170:28: error: invalid conversion from 'void (*)(void*, long int)' to 'tcp_err_fn {aka void (*)(void*, signed char)}' [-fpermissive]

     tcp_err(_pcb, &_s_error);

                            ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:321:18: error:   initializing argument 2 of 'void tcp_err(tcp_pcb*, tcp_err_fn)' [-fpermissive]

 void             tcp_err     (struct tcp_pcb *pcb, tcp_err_fn err)ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:171:31: error: invalid conversion from 'long int (*)(void*, tcp_pcb*)' to 'tcp_poll_fn {aka signed char (*)(void*, tcp_pcb*)}' [-fpermissive]

     tcp_poll(_pcb, &_s_poll, 1);

                               ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:320:18: error:   initializing argument 2 of 'void tcp_poll(tcp_pcb*, tcp_poll_fn, u8_t)' [-fpermissive]

 void             tcp_poll    (struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval)ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp: In member function 'long int AsyncClient::_connected(void*, long int)':

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:292:28: error: invalid conversion from 'long int (*)(void*, tcp_pcb*, pbuf*, long int)' to 'tcp_recv_fn {aka signed char (*)(void*, tcp_pcb*, pbuf*, signed char)}' [-fpermissive]

     tcp_recv(_pcb, &_s_recv);

                            ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:318:18: error:   initializing argument 2 of 'void tcp_recv(tcp_pcb*, tcp_recv_fn)' [-fpermissive]

 void             tcp_recv    (struct tcp_pcb *pcb, tcp_recv_fn recv) ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:293:28: error: invalid conversion from 'long int (*)(void*, tcp_pcb*, uint16_t) {aka long int (*)(void*, tcp_pcb*, short unsigned int)}' to 'tcp_sent_fn {aka signed char (*)(void*, tcp_pcb*, short unsigned int)}' [-fpermissive]

     tcp_sent(_pcb, &_s_sent);

                            ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:319:18: error:   initializing argument 2 of 'void tcp_sent(tcp_pcb*, tcp_sent_fn)' [-fpermissive]

 void             tcp_sent    (struct tcp_pcb *pcb, tcp_sent_fn sent)ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:294:31: error: invalid conversion from 'long int (*)(void*, tcp_pcb*)' to 'tcp_poll_fn {aka signed char (*)(void*, tcp_pcb*)}' [-fpermissive]

     tcp_poll(_pcb, &_s_poll, 1);

                               ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:320:18: error:   initializing argument 2 of 'void tcp_poll(tcp_pcb*, tcp_poll_fn, u8_t)' [-fpermissive]

 void             tcp_poll    (struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval)ICACHE_FLASH_ATTR;

                  ^

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp: In member function 'void AsyncServer::begin()':

C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:848:30: error: invalid conversion from 'long int (*)(void*, tcp_pcb*, long int)' to 'tcp_accept_fn {aka signed char (*)(void*, tcp_pcb*, signed char)}' [-fpermissive]

   tcp_accept(_pcb, &_s_accept);

                              ^

In file included from C:\Users\user\Documents\Arduino\libraries\ESPAsyncTCP-master\src\ESPAsyncTCP.cpp:27:0:

C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222/tools/sdk/lwip/include/lwip/tcp.h:317:18: error:   initializing argument 2 of 'void tcp_accept(tcp_pcb*, tcp_accept_fn)' [-fpermissive]

 void             tcp_accept  (struct tcp_pcb *pcb, tcp_accept_fn accept) ICACHE_FLASH_ATTR;

                  ^

Multiple libraries were found for "SD.h"
 Used: C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-nightly+20170222\libraries\SD
 Not used: D:\arduino-1.8.1\libraries\SD
Multiple libraries were found for "ArduinoJson.h"
 Used: C:\Users\user\Documents\Arduino\libraries\ArduinoJson
 
exit status 1
Error compiling for board NodeMCU 1.0 (ESP-12E Module).

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.